【发布时间】:2012-07-25 18:48:37
【问题描述】:
这就是我想要做的。我正在尝试使用 facebook 批处理 api 同时将单张照片发布到多个 facebook 页面。我首先将所有内容放入一个数组(fb_batch)中,然后使用 JSON 对其进行编码。此方法适用于发布消息和链接。在下面的示例中,@pages 数组是一个 facebook 页面数组,其中包含 facebook 页面信息,包括有效的访问令牌。我知道访问令牌是有效的,因为在程序的其他地方我可以使用相同的访问令牌发布单张照片。
fb_batch = []
top_access_token = nil
@pages.each do |page|
top_access_token = page.access_token if top_access_token.nil?
if image.nil?
fb_batch << {method: 'POST', relative_url: 'me/feed?access_token=' + page.access_token, body: body}
else
fb_batch << {method: 'POST', relative_url: 'me/photos?access_token=' + page.access_token, body: body, attached_files: 'file1'}
end
end
c = Curl::Easy.new('https://graph.facebook.com')
c.multipart_form_post = true
c.verbose = true
post_data = [Curl::PostField.content('access_token', top_access_token), Curl::PostField.content('batch', fb_batch.to_json)]
post_data << Curl::PostField.file('file1', image.image.current_path) if !image.nil?
c.http_post(post_data)
请注意,如果有图像,我只添加文件。因此,当我向多个帐户发布消息或链接时,同样的代码也适用。
当我将图像发布到多个帐户时出现错误。它将图像应用到 fb_batch 数组中的第一个帐户,但所有其他帐户都有错误。我是否必须为每个帐户单独附加图像我希望将照片发布到具有不同附加文件名的每个图像?对我来说,这意味着请求将是巨大的,因为如果我要发布到 50 个帐户,我可能需要附加相同的图像 50 次。
这是我从 facebook 得到的回复:
[{"code":200,"headers":[{"name":"Access-Control-Allow-Origin","value":"*"},{"name":"Cache-Control" ,"value":"private, no-cache, no-store, must-revalidate"},{"name":"Connection","value":"close"},{"name":"Content-Type" ,"value":"text/javascript; charset=UTF-8"},{"name":"Expires","value":"Sat, 01 Jan 2000 00:00:00 GMT"},{"name" :"Pragma","value":"no-cache"}],"body":"{\"id\":\"416193168426655\",\"post_id\":\"159594100753231_416193185093320\"}"}, {"code":400,"headers":[{"name":"Access-Control-Allow-Origin","value":"*"},{"name":"Cache-Control","value" :"no-store"},{"name":"Connection","value":"close"},{"name":"Content-Type","value":"text/javascript; charset=UTF- 8"},{"name":"Expires","value":"Sat, 01 Jan 2000 00:00:00 GMT"},{"name":"Pragma","value":"no-cache" },{"name":"WWW-Authenticate","value":"OAuth \"Facebook Platform\" \"invalid_request\" \"(#1) 发生未知错误\""}],"body": "{\"error\":{\"message\":\"(#1) 发生未知错误\",\"type\":\"OAuthException\",\"code\":1}}" }]
抱歉,有点乱。您可以看到第一个代码是 200,它成功发布了图像并返回了图像 ID。第二个代码是 400 表示发生未知错误。我认为这意味着它找不到图像或类似的东西。如果我在数组中切换两个帐户,那么它将成功发布到另一个帐户,并且将在刚刚成功的帐户上失败。
感谢您一直阅读到最后!这是你的金罐……
【问题讨论】:
-
只是让您知道,如果我多次上传文件并在每次上传时添加不同的名称,那么它可以工作。它仍然是一个请求,但请求的大小可能是所需大小的 50 倍。
标签: facebook photo facebook-batch-request