Facebook API 报告 - C#、RestSharp
Facebook API Reporting - C#, RestSharp
我正在尝试使用我的控制台应用程序下载报告。有几件事我很难理解 facebook API。
硬编码的 1000002 是关于什么的。如果您在 Graph API Explorer 的浏览器中点击此 URL,您将获得一个条目,其中包含:
{
"name": "Angus Shieh",
"id": "1000002"
}
我需要下载一个csv文件并根据:
https://developers.facebook.com/docs/marketing-api/insights/v2.5
我需要使用 url:
下载它
https://www.facebook.com/ads/ads_insights/export_report?report_run_id=<REPORT_ID>&format=<REPORT_FORMAT>&access_token=<ACCESS_TOKEN>
这在浏览器中有点用,我可以下载一份报告,但它只包含两个字段,根本不是完整的报告。然而,我很难用我的代码下载这个文件。我尝试创建一个 HttpClient 并导航到那个 url,但没有成功。
我想做的是以编程方式为每个帐户的每个活动下载报告。然后我将在后面的步骤中使用该数据来填充报告数据库。
更新:
我已经弄清楚如何使用 API.
下载报告
步骤 1 - 调用创建异步作业的端点。
var client = new RestClient("https://graph.facebook.com"); // new client
var request = new RestRequest(Method.POST);
request.Resource = "{version}/{campaign_id}/insights"; // campaind id is the <ad object>
request.AddParameter("version", "v2.5", ParameterType.UrlSegment);
request.AddParameter("campaign_id", "6039201600172", ParameterType.UrlSegment); // needs a campaign id
// the form post fields
request.AddParameter("level", "ad");
request.AddParameter("fields", "['campaign_name','ad_name','ad_id','reach','frequency','impressions','cpm','cpp','spend','social_clicks','unique_clicks','ctr','unique_ctr','account_name','actions','total_actions','website_clicks']");
request.AddParameter("time_range", "{'since':'2016-04-04','until':'2016-04-04'}");
request.AddParameter("time_increment", "1");
request.AddParameter("access_token", accessToken);
// EXAMPLE URL WHEN DONE
// https://graph.facebook.com/v2.5/6039201600172/insights
IRestResponse<Report> response = client.Execute<Report>(request);
var report_id = response.Data.report_run_id; // report run id
步骤 2 - 检查新创建的作业的状态,直到它完成。
var reportPercent = "";
while (reportPercent != "100")
{
Thread.Sleep(2000); // wait 2 seconds
// Next Request
var checkReportStatusRequest = new RestRequest(Method.GET);
checkReportStatusRequest.Resource = "{version}/{report_id}"; // campaind id is the <ad object>
checkReportStatusRequest.AddParameter("version", "v2.5", ParameterType.UrlSegment);
checkReportStatusRequest.AddParameter("report_id", report_id, ParameterType.UrlSegment);
checkReportStatusRequest.AddParameter("access_token", accessToken);
//request.AddParameter("access_token", accessToken, ParameterType.UrlSegment);
// https://graph.facebook.com/v2.5/6042737300572/?access_token=EAAIe5FQupPkBAADZBTgqWDBTDHkoJ9k0HSQSu1PLpbBdPgKFhyvRtIMUXF0po06r8hRw1nbJOszznSNEh8OJW4XBeNxClZApeWoJ31QQDSn7KZC33PPY8Wazknu0ZC3mUnKGP0ZCa4OiuawLPsu8FhrLuGaNj4M4ZD
IRestResponse<ReportStatus> responseStatus = client.Execute<ReportStatus>(checkReportStatusRequest);
//var responseStatus = client.Execute(checkReportStatusRequest);
reportPercent = responseStatus.Data.async_percent_completion; // report run id
//var reportPercent = responseStatus.Content; // report run id
}
第 3 步 - 下载您的报告。
string url = "https://www.facebook.com/ads/ads_insights/export_report?report_run_id=" + report_id + "&format=csv&access_token=" + accessToken;
using (WebClient wc = new WebClient())
{
wc.Headers[HttpRequestHeader.ContentType] = "application/x-www-form-urlencoded";
wc.Headers["User-Agent"] = "Mozilla/5.0 (compatible; MSIE 10.0; Windows NT 6.2; WOW64; Trident/6.0)";
wc.DownloadFile(url, @"C:\reports\page1.csv"); // download the file
}
Console.WriteLine("File Downloaded");
//pause
Console.ReadKey();
更新:
我已经弄清楚如何使用 API.
下载报告
步骤 1 - 调用创建异步作业的端点。
var client = new RestClient("https://graph.facebook.com"); // new client
var request = new RestRequest(Method.POST);
request.Resource = "{version}/{campaign_id}/insights"; // campaind id is the <ad object>
request.AddParameter("version", "v2.5", ParameterType.UrlSegment);
request.AddParameter("campaign_id", "6039201600172", ParameterType.UrlSegment); // needs a campaign id
// the form post fields
request.AddParameter("level", "ad");
request.AddParameter("fields", "['campaign_name','ad_name','ad_id','reach','frequency','impressions','cpm','cpp','spend','social_clicks','unique_clicks','ctr','unique_ctr','account_name','actions','total_actions','website_clicks']");
request.AddParameter("time_range", "{'since':'2016-04-04','until':'2016-04-04'}");
request.AddParameter("time_increment", "1");
request.AddParameter("access_token", accessToken);
// EXAMPLE URL WHEN DONE
// https://graph.facebook.com/v2.5/6039201600172/insights
IRestResponse<Report> response = client.Execute<Report>(request);
var report_id = response.Data.report_run_id; // report run id
步骤 2 - 检查新创建的作业的状态,直到它完成。
var reportPercent = "";
while (reportPercent != "100")
{
Thread.Sleep(2000); // wait 2 seconds
// Next Request
var checkReportStatusRequest = new RestRequest(Method.GET);
checkReportStatusRequest.Resource = "{version}/{report_id}"; // campaind id is the <ad object>
checkReportStatusRequest.AddParameter("version", "v2.5", ParameterType.UrlSegment);
checkReportStatusRequest.AddParameter("report_id", report_id, ParameterType.UrlSegment);
checkReportStatusRequest.AddParameter("access_token", accessToken);
//request.AddParameter("access_token", accessToken, ParameterType.UrlSegment);
// https://graph.facebook.com/v2.5/6042737300572/?access_token=EAAIe5FQupPkBAADZBTgqWDBTDHkoJ9k0HSQSu1PLpbBdPgKFhyvRtIMUXF0po06r8hRw1nbJOszznSNEh8OJW4XBeNxClZApeWoJ31QQDSn7KZC33PPY8Wazknu0ZC3mUnKGP0ZCa4OiuawLPsu8FhrLuGaNj4M4ZD
IRestResponse<ReportStatus> responseStatus = client.Execute<ReportStatus>(checkReportStatusRequest);
//var responseStatus = client.Execute(checkReportStatusRequest);
reportPercent = responseStatus.Data.async_percent_completion; // report run id
//var reportPercent = responseStatus.Content; // report run id
}
第 3 步 - 下载您的报告。
string url = "https://www.facebook.com/ads/ads_insights/export_report?report_run_id=" + report_id + "&format=csv&access_token=" + accessToken;
using (WebClient wc = new WebClient())
{
wc.Headers[HttpRequestHeader.ContentType] = "application/x-www-form-urlencoded";
wc.Headers["User-Agent"] = "Mozilla/5.0 (compatible; MSIE 10.0; Windows NT 6.2; WOW64; Trident/6.0)";
wc.DownloadFile(url, @"C:\reports\page1.csv"); // download the file
}
Console.WriteLine("File Downloaded");
//pause
Console.ReadKey();
我正在尝试使用我的控制台应用程序下载报告。有几件事我很难理解 facebook API。
硬编码的 1000002 是关于什么的。如果您在 Graph API Explorer 的浏览器中点击此 URL,您将获得一个条目,其中包含:
{
"name": "Angus Shieh",
"id": "1000002"
}
我需要下载一个csv文件并根据: https://developers.facebook.com/docs/marketing-api/insights/v2.5 我需要使用 url:
下载它https://www.facebook.com/ads/ads_insights/export_report?report_run_id=<REPORT_ID>&format=<REPORT_FORMAT>&access_token=<ACCESS_TOKEN>
这在浏览器中有点用,我可以下载一份报告,但它只包含两个字段,根本不是完整的报告。然而,我很难用我的代码下载这个文件。我尝试创建一个 HttpClient 并导航到那个 url,但没有成功。
我想做的是以编程方式为每个帐户的每个活动下载报告。然后我将在后面的步骤中使用该数据来填充报告数据库。
更新: 我已经弄清楚如何使用 API.
下载报告步骤 1 - 调用创建异步作业的端点。
var client = new RestClient("https://graph.facebook.com"); // new client
var request = new RestRequest(Method.POST);
request.Resource = "{version}/{campaign_id}/insights"; // campaind id is the <ad object>
request.AddParameter("version", "v2.5", ParameterType.UrlSegment);
request.AddParameter("campaign_id", "6039201600172", ParameterType.UrlSegment); // needs a campaign id
// the form post fields
request.AddParameter("level", "ad");
request.AddParameter("fields", "['campaign_name','ad_name','ad_id','reach','frequency','impressions','cpm','cpp','spend','social_clicks','unique_clicks','ctr','unique_ctr','account_name','actions','total_actions','website_clicks']");
request.AddParameter("time_range", "{'since':'2016-04-04','until':'2016-04-04'}");
request.AddParameter("time_increment", "1");
request.AddParameter("access_token", accessToken);
// EXAMPLE URL WHEN DONE
// https://graph.facebook.com/v2.5/6039201600172/insights
IRestResponse<Report> response = client.Execute<Report>(request);
var report_id = response.Data.report_run_id; // report run id
步骤 2 - 检查新创建的作业的状态,直到它完成。
var reportPercent = "";
while (reportPercent != "100")
{
Thread.Sleep(2000); // wait 2 seconds
// Next Request
var checkReportStatusRequest = new RestRequest(Method.GET);
checkReportStatusRequest.Resource = "{version}/{report_id}"; // campaind id is the <ad object>
checkReportStatusRequest.AddParameter("version", "v2.5", ParameterType.UrlSegment);
checkReportStatusRequest.AddParameter("report_id", report_id, ParameterType.UrlSegment);
checkReportStatusRequest.AddParameter("access_token", accessToken);
//request.AddParameter("access_token", accessToken, ParameterType.UrlSegment);
// https://graph.facebook.com/v2.5/6042737300572/?access_token=EAAIe5FQupPkBAADZBTgqWDBTDHkoJ9k0HSQSu1PLpbBdPgKFhyvRtIMUXF0po06r8hRw1nbJOszznSNEh8OJW4XBeNxClZApeWoJ31QQDSn7KZC33PPY8Wazknu0ZC3mUnKGP0ZCa4OiuawLPsu8FhrLuGaNj4M4ZD
IRestResponse<ReportStatus> responseStatus = client.Execute<ReportStatus>(checkReportStatusRequest);
//var responseStatus = client.Execute(checkReportStatusRequest);
reportPercent = responseStatus.Data.async_percent_completion; // report run id
//var reportPercent = responseStatus.Content; // report run id
}
第 3 步 - 下载您的报告。
string url = "https://www.facebook.com/ads/ads_insights/export_report?report_run_id=" + report_id + "&format=csv&access_token=" + accessToken;
using (WebClient wc = new WebClient())
{
wc.Headers[HttpRequestHeader.ContentType] = "application/x-www-form-urlencoded";
wc.Headers["User-Agent"] = "Mozilla/5.0 (compatible; MSIE 10.0; Windows NT 6.2; WOW64; Trident/6.0)";
wc.DownloadFile(url, @"C:\reports\page1.csv"); // download the file
}
Console.WriteLine("File Downloaded");
//pause
Console.ReadKey();
更新: 我已经弄清楚如何使用 API.
下载报告步骤 1 - 调用创建异步作业的端点。
var client = new RestClient("https://graph.facebook.com"); // new client
var request = new RestRequest(Method.POST);
request.Resource = "{version}/{campaign_id}/insights"; // campaind id is the <ad object>
request.AddParameter("version", "v2.5", ParameterType.UrlSegment);
request.AddParameter("campaign_id", "6039201600172", ParameterType.UrlSegment); // needs a campaign id
// the form post fields
request.AddParameter("level", "ad");
request.AddParameter("fields", "['campaign_name','ad_name','ad_id','reach','frequency','impressions','cpm','cpp','spend','social_clicks','unique_clicks','ctr','unique_ctr','account_name','actions','total_actions','website_clicks']");
request.AddParameter("time_range", "{'since':'2016-04-04','until':'2016-04-04'}");
request.AddParameter("time_increment", "1");
request.AddParameter("access_token", accessToken);
// EXAMPLE URL WHEN DONE
// https://graph.facebook.com/v2.5/6039201600172/insights
IRestResponse<Report> response = client.Execute<Report>(request);
var report_id = response.Data.report_run_id; // report run id
步骤 2 - 检查新创建的作业的状态,直到它完成。
var reportPercent = "";
while (reportPercent != "100")
{
Thread.Sleep(2000); // wait 2 seconds
// Next Request
var checkReportStatusRequest = new RestRequest(Method.GET);
checkReportStatusRequest.Resource = "{version}/{report_id}"; // campaind id is the <ad object>
checkReportStatusRequest.AddParameter("version", "v2.5", ParameterType.UrlSegment);
checkReportStatusRequest.AddParameter("report_id", report_id, ParameterType.UrlSegment);
checkReportStatusRequest.AddParameter("access_token", accessToken);
//request.AddParameter("access_token", accessToken, ParameterType.UrlSegment);
// https://graph.facebook.com/v2.5/6042737300572/?access_token=EAAIe5FQupPkBAADZBTgqWDBTDHkoJ9k0HSQSu1PLpbBdPgKFhyvRtIMUXF0po06r8hRw1nbJOszznSNEh8OJW4XBeNxClZApeWoJ31QQDSn7KZC33PPY8Wazknu0ZC3mUnKGP0ZCa4OiuawLPsu8FhrLuGaNj4M4ZD
IRestResponse<ReportStatus> responseStatus = client.Execute<ReportStatus>(checkReportStatusRequest);
//var responseStatus = client.Execute(checkReportStatusRequest);
reportPercent = responseStatus.Data.async_percent_completion; // report run id
//var reportPercent = responseStatus.Content; // report run id
}
第 3 步 - 下载您的报告。
string url = "https://www.facebook.com/ads/ads_insights/export_report?report_run_id=" + report_id + "&format=csv&access_token=" + accessToken;
using (WebClient wc = new WebClient())
{
wc.Headers[HttpRequestHeader.ContentType] = "application/x-www-form-urlencoded";
wc.Headers["User-Agent"] = "Mozilla/5.0 (compatible; MSIE 10.0; Windows NT 6.2; WOW64; Trident/6.0)";
wc.DownloadFile(url, @"C:\reports\page1.csv"); // download the file
}
Console.WriteLine("File Downloaded");
//pause
Console.ReadKey();