【发布时间】:2022-01-06 09:03:53
【问题描述】:
所以有很多类似的问题,虽然我没有设法在其中任何一个中找到答案,所以我们来了。我正在尝试使用 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)
如果我忘记提及一些细节,请随时提出任何问题,谢谢!
【问题讨论】:
标签: python facebook-graph-api facebook-business-sdk matillion