POST请求Facebook Ads API的空响应正文

时间:2014-10-09 19:22:04

标签: python facebook curl

我正在尝试将图片发布到Facebook的广告API,https://developers.facebook.com/docs/reference/ads-api/adimage,他们的示例是

curl \
-F 'test.zip=@test.zip' \
-F 'access_token=<ACCESS_TOKEN>' \
"https://graph.facebook.com/act_<ACCOUNT_ID>/adimages"

但是当我在请求中这样做时:

payload = {'access_token': ACCESS_TOKEN,
           image_name: post_image}

r = requests.post(post_url, data=payload, stream=True)

我得到一个空的回复正文。我该如何解决这个问题,以便得到回复正文?

2 个答案:

答案 0 :(得分:0)

我们最近发布了Facebook Python广告API SDK(不知道是否在您的雷达上)。但您可以使用以下代码批量创建zip:

from facebookads.objects import AdImage

image = AdImage(parent_id='act_<AD_ACCOUNT_ID>')
image[AdImage.Field.filename] = './test.zip'
image.remote_create(batch=True)

# Output image hash.
print image[AdImage.Field.hash]

GitHub自述文件包括使用您的应用ID,访问令牌等引导您的脚本。 https://github.com/facebook/facebook-python-ads-sdk

答案 1 :(得分:0)

尝试使用Python时,首先需要以二进制模式打开图像,然后将其放入文件键。有效负载应该单独给出access_token。由于呼叫无法上传该图像,您的响应为空。

file_obj = {'filename': open(local_image_path, 'rb')}
payload = {'access_token': ACCESS_TOKEN}
response = requests.post(post_url, data=payload, files=file_obj)

你会得到这样的回复:

{
    "id" : 123456789
}

希望这有帮助。