2016-04-11 2 views
1

Я пытаюсь загрузить отчет с помощью моего консольного приложения. Есть несколько вещей, которые я с трудом понимаю с API facebook. enter image description hereFacebook API Reporting - C#, RestSharp

Что такое hardcoded 1000002 about. Если вы нажмете этот URL либо в браузере графа API Explorer, вы получаете одну запись, которая содержит:

{ 
    "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(); 
+1

Большое спасибо, что вы только что спасли мою жизнь :) – anekix

ответ

1

Update: Я понял, как загрузить отчет с помощью 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(); 

 Смежные вопросы

  • Нет связанных вопросов^_^