2016-11-16 174 views
0

我試圖通過Apple Search Ads API獲取報告數據。所以我使用的方法 -H ... \ -d 「@ TestSearchTermReport.json」 -X POST 「/ V1 /報告/運動/ {CID}/searchterms」Apple Search Ads API報告POST方法錯誤

我已經包括了所有的報頭和證書。以下是我的POST正文的json數據文件的內容: { 「startTime」:「2016-11-13」, 「endTime」:「2016-11-13」, 「timezone」:「UTC 「, 」granularity「:」DAILY「, 」selector「:{ 」orderBy「:[{」field「:」spend「,」sortOrder「:」DESCENDING「}], 」fields「:[ 」, 「輕敲」, 「轉化」, 「每次轉化費用平均」, 「平均每次點擊成本」, 「TTR」, 「conversionRate」], 「分頁」:{ 「偏移」:0, 「極限」:1000 } } , 「groupBy」:「countryCode」, 「returnRowTotals」:False, 「returnRecordsWithNMeMetrics」:False }

不過,我得到了以下錯誤消息:

{ 「數據」:NULL, 「分頁」:空, 「錯誤」:{ 「錯誤」:[{ 「messageCode」: 「INVALID_JSON_REQUEST」 ,「message」:「這是一個無效的json。請求無法解析「,」field「:」Line#:1 Column#:3「}]}}

我已經嘗試了很多次,但仍然不能正常工作。幫我

在此先感謝

回答

2

我剛剛一直在掙扎與此API自己,文檔是不完全的用戶友好

看起來你有幾個問題在這裏?!

  • Timez一個和粒度是枚舉,所以它們的值需要是數字的,而不是字符串。實際上,每次我使用時區字段進行調用時,仍然出現錯誤,因此暫時忽略了這一點,直到找到解決方案。
  • 某些字段名稱不正確;花費,avgCPC和countryCode應分別爲localSpend,avgCPT和COUNTRY_CODE。
  • 按字段分組應該是一個列表。

當你使用python,試試這個:

import requests 

org_id = <YOUR_ORG_ID> 
certificate_path = '<PATH_TO_YOUR_CERTIFICATE>' 
certificate_key_path = '<PATH_TO_YOUR_CERTIFICATE_KEY>' 
campaign_id = <YOUR_CAMPAIGN_ID> 


headers = {"Authorization": "orgId=%s" % org_id}  
payload = { 
       "startTime": "2016-11-13", 
       "endTime": "2016-11-13", 
       "granularity": 1, 
       "selector": { 
        "orderBy":[{"field":"localSpend","sortOrder":"DESCENDING"}], 
        "fields": ["localSpend", "taps", "conversions", "avgCPA", "avgCPT", "ttr", "conversionRate"], 
        "pagination": { "offset": 0, "limit": 1000 } 
        }, 
       "groupBy": ["COUNTRY_CODE"], 
       "returnRowTotals": False, 
       "returnRecordsWithNoMetrics": False 
      } 
url = 'https://api.searchads.apple.com/api/v1/reports/campaigns/%s/searchterms' % campaign_id 
response = requests.post(url, cert=(certificate_path, certificate_key_path), json=payload, headers=headers) 
print(response.text) 

這將返回我成功的響應。希望它也適用於你!

+0

謝謝你的分享,保存一些好的小時 – AdrianBR

1

我能得到它的工作使用下列捲曲

curl --cert ./<PI2 CERTIFICATE FILE>.p12 --pass <PI2 CERTIFICATE PASSWORD> -H "Authorization: orgId=45230" -H "Content-Type: application/json" -X POST -d ' {"startTime": "2017-04-06", "endTime": "2017-04-06", "granularity": 2, "selector": {"orderBy":[{"field":"localSpend","sortOrder":"DESCENDING"}], "fields": ["localSpend"], "pagination": { "offset": 0, "limit": 1000 } }, "groupBy": ["COUNTRY_CODE"], "returnRowTotals": false, "returnRecordsWithNoMetrics": false }' "https://api.searchads.apple.com/api/v1/reports/campaigns/campaign name/searchterms" 

您可以通過以下如果您使用的是Python的請求,使這裏提到 https://developer.apple.com/library/content/documentation/General/Conceptual/AppStoreSearchAdsAPIReference/API_Overview.html#//apple_ref/doc/uid/TP40017495-CH7-SW8

步驟獲得P12證書因爲我沒有找到任何將p12證書和密碼作爲輸入的參數,所以在發送後可能需要做一些額外的工作。創建一個CRT文件和PEM使用OpenSSL的

openssl pkcs12 -in Apple_Certificate.p12 -out file.crt.pem -clcerts -nokeys 
openssl pkcs12 -in Apple_Certificate.p12 -out file.key.pem -nocerts -nodes 

,並使用下面的代碼

headers = { 
      'Authorization': 'orgId=<ORG_ID>', 
      'Content-Type': 'application/json', 
      } 
data = ' {"startTime": "%s", 
      "endTime": "%s", 
      "granularity": 2, ' \ 
      '"selector": {"orderBy":[{"field":"localSpend","sortOrder":"DESCENDING"}], ' \ 
      '"fields": ["localSpend"], "pagination": { "offset": 0, "limit": 1000 } }, ' \ 
      '"groupBy": ["COUNTRY_CODE"], "returnRowTotals": false, "returnRecordsWithNoMetrics": false }' % (date_report, date_report) 
url = 'https://api.searchads.apple.com/api/v1/reports/campaigns/%s/searchterms' % (your_campaign_id) 
r = requests.post(url, headers=headers, data=data, 
             cert=('<path to crt file>', 
              '<path to key file>'))