Konsol uygulamam ile bir rapor indirmeye çalışıyorum. Facebook API ile anlamaya zorlandığım birkaç şey var. Facebook 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();
Çok teşekkür ederim hayatımı kurtardınız :) – anekix