Apple Search Ads API报告POST方法错误

时间:2016-11-16 19:18:28

标签: python api apple-search-ads

我正在尝试通过Apple Search Ads API获取报告数据。所以我使用这个方法 -H ...\   -d“@ TestSearchTermReport.json”   -X POST“/ v1 / reports / campaigns / {cId} / searchterms”

我已经包含了所有标头和凭据。以下是我的POST主体的json数据文件的内容: {     “startTime”:“2016-11-13”,     “endTime”:“2016-11-13”,     “timezone”:“UTC”,     “粒度”:“每日”,     “selector”:{         “ORDERBY”:[{ “字段”: “花”, “中将sortOrder”: “下降”}],         “fields”:[“花费”,“点击”,“转换”,“avgCPA”,“avgCPC”,“ttr”,“conversionRate”],         “分页”:{             “偏移”:0,             “限制”:1000         }     },     “groupBy”:“countryCode”,     “returnRowTotals”:错,     “returnRecordsWithNoMetrics”:错误 }

但是,我收到以下错误消息:

{“data”:null,“pagination”:null,“error”:{“errors”:[{“messageCode”:“INVALID_JSON_REQUEST”,“message”:“这是一个无效的json。请求不能被解析“,”字段“:”行#:1列#:3“}]}}

我曾多次尝试过不同的方式,但仍然无法正常工作。有没有聪明人可以帮助我?

提前致谢!

3 个答案:

答案 0 :(得分:4)

我自己一直在努力使用这个API,文档并不完全是用户友好的!

看起来你在这里有一些问题:

  • 时区和粒度是枚举,因此它们的值必须是数字,而不是字符串。每次我使用timezone字段调用时,我实际上仍然会收到错误,因此暂时忽略了这一点,直到找到解决方案。
  • 您的某些字段名称不正确;花费,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)

这会给我一个成功的回复。希望它也适合你!

答案 1 :(得分:1)

我能够使用以下卷曲

使其正常工作
DataGrid

您可以按照此处提到的步骤获取p12证书 https://developer.apple.com/library/content/documentation/General/Conceptual/AppStoreSearchAdsAPIReference/API_Overview.html#//apple_ref/doc/uid/TP40017495-CH7-SW8

如果你在python中使用请求进行post调用,你可能需要做一些额外的工作,因为我没有找到任何以p12证书和密码作为输入的参数。使用openssl

创建一个crt文件和pem
curl --cert ./<PI2 CERTIFICATE FILE>.p12 --pass <PI2 CERTIFICATE PASSWORD>  -H "Authorization: orgId=xxx"  -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"

并使用以下代码

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

答案 2 :(得分:0)

您可以使用邮递员:

步骤:  1.从邮递员-enter image description here

导入行文本
  

curl -X GET'https://api.searchads.apple.com/api/v2/campaigns/124324'   -H'授权:orgId = 234234'-H'内容类型:application / json'

  1. 设置证书并键入邮递员设置(我的macOS configuration配置)-enter image description here

    1. 现在您可以在邮递员处使用该请求-enter image description here