2016-04-11 24 views
1

Konsol uygulamam ile bir rapor indirmeye çalışıyorum. Facebook API ile anlamaya zorlandığım birkaç şey var. enter image description hereFacebook API Bildirme - C#, RestSharp

Yaklaşık 1000002 kodlu nedir. Bunu kullanarak indirmeniz gerekir https://developers.facebook.com/docs/marketing-api/insights/v2.5 : için

{ 
    "name": "Angus Shieh", 
    "id": "1000002" 
} 

ben bir csv dosyası ve uygun indirmenize gerek: Bu URL'ye vurursanız ya Graph API Explorer tarayıcısında sen içeren tek bir giriş olsun url: Bu tarayıcıda çeşit çalışır

https://www.facebook.com/ads/ads_insights/export_report?report_run_id=<REPORT_ID>&format=<REPORT_FORMAT>&access_token=<ACCESS_TOKEN> 

, bir rapor indirebilirsiniz ancak yalnızca iki alan, hiç değil tam bir rapor içerir. Ancak bu dosyayı kodumla indirmekte zorlanıyorum. Bir HttpClient oluşturmaya ve çalışmayan bu URL'ye gitmeye çalıştım.

Ne yapmak isterim ki, her hesap için her bir kampanya için programlı olarak bir rapor indirmektir. Bu verileri daha sonra bir raporlama veritabanını doldurmak için kullanacağım.

Güncelleme: API kullanarak bir raporun nasıl indirileceğini anladım.

Adım 1 - Eşzamansız iş oluşturan bitiş noktasını çağırın.

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 

Adım 2 - bu yapılana kadar bu yeni oluşturulan işin durumunu kontrol edin.

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 
      } 

Adım 3 - raporunuzu indirmek.

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

Çok teşekkür ederim hayatımı kurtardınız :) – anekix

cevap

1

Güncelleme: Ben API kullanarak bir rapor indirmek için nasıl anladım var.

Adım 1 - Eşzamansız iş oluşturan bitiş noktasını çağırın.

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 

Adım 2 - bu yapılana kadar bu yeni oluşturulan işin durumunu kontrol edin.

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 
      } 

Adım 3 - raporunuzu indirmek.

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();