所以有很多类似的问题,虽然我没有设法在任何一个中找到答案,所以我们来了。我正在尝试使用 Python 从 Facebook API 中提取一些数据,这是我得到的错误:
facebook_business.exceptions.FacebookRequestError:
Message: Call was not successful
Method: GET
Path: https://graph.facebook.com/v10.0/[hidden]/ads
Params: {'summary': 'true'}
Status: 400
Response:
{
"error": {
"message": "(#2635) You are calling a deprecated version of the Ads API. Please update to the latest version: v11.0.",
"type": "OAuthException",
"code": 2635,
"fbtrace_id": "[hidden]"
}
}
我直接进入我的 Facebook 个人资料中的应用程序设置,看起来像(图片相关)
请注意,在错误消息v10.0
中有路径,并且在应用程序配置文件中的任何更改 API 版本之前是v7.0
,这很奇怪,是否还有其他一些 API 需要切换其版本?将那个切换到 v12.0(或 v11.0)并没有帮助,所以我真的不知道该怎么办了。
另一个重要注意事项是,此代码是 Matillion 中计划作业的一部分,并且在版本切换后,如果在本地运行,代码确实会返回数据,所以我的另一个预感是 Matillion 环境也需要进行一些更改.
代码如下所示:
from facebook_business.api import FacebookAdsApi
from facebook_business.adobjects.adaccount import AdAccount
from facebook_business.adobjects.adreportrun import AdReportRun
import time
from io import StringIO
import json
import boto3
access_token = [hidden]
app_secret = [hidden]
app_id = [hidden]
FacebookAdsApi.init(app_id, app_secret, access_token)
fb_account = AdAccount('[hidden]')
params = {'time_range': {'since': '2022-01-05', 'until': '2022-01-06'},
'level':'ad',
'action_breakdowns':['action_device','action_type'],
'TimeIncrement':1,
}
fields = [<a pretty big list of fields>]
ads=fb_account.get_ads()
async_job = fb_account.get_insights(params = params, fields = fields,is_async=True)
async_job.api_get()
while async_job[AdReportRun.Field.async_status] != 'Job Completed' or async_job[AdReportRun.Field.async_percent_completion] < 100:
time.sleep(1)
async_job.api_get()
time.sleep(1)
responce=async_job.get_result()
print(response)
如果我忘记提及一些细节,请随时提出任何问题,谢谢!