所以这就是我想要做的。我正在尝试使用facebook batch 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数组的第一个帐户,但所有其他帐户都有错误。我是否必须为每个要将照片发布到具有不同attach_file名称的图像的帐户单独附加图像?对我来说,这意味着请求将是巨大的,因为如果我发布到50个帐户,我可能需要将相同的图像附加50次。
以下是我从facebook获得的回复:
[{ “代码”:200, “报头”:[{ “名称”: “访问控制允许来源”, “值”: “*”},{ “名称”: “缓存控制” ,“值”:“私有,无缓存,无商店,必须重新验证”},{“名称”:“连接”,“值”:“关闭”},{“名称”:“内容类型” ,“value”:“text / javascript; charset = UTF-8”},{“name”:“Expires”,“value”:“Sat,01 Jan 00 00:00:00 GMT”},{“name” : “附注”, “值”: “无缓存”}]中, “身体”: “{\” ID \ “:\” 416193168426655 \ “\ ”POST_ID \“:\ ”159594100753231_416193185093320 \“}”}, {“代码”:400,“报头”:[{“名称”:“访问控制允许来源”,“值”:“*”},{“名称”:“缓存控制”,“值” :“no-store”},{“name”:“Connection”,“value”:“close”},{“name”:“Content-Type”,“value”:“text / javascript; charset = UTF- 8“},{”name“:”Expires“,”value“:”Sat,01 Jan 01 00:00:00 GMT“},{”name“:”Pragma“,”value“:”no-cache“ },{“name”:“WWW-Authenticate”,“value”:“OAuth \”Facebook Platform \“\”invalid_request \“\”(#1)发生未知错误\“”}],“body”: “{\”error \“:{\”message \“:\”(#1)发生未知错误\“,\”键入\“:\”OAuthException \“,\”code \“:1}}” }]
抱歉它很乱。您可以看到第一个代码是200,它成功发布图像并返回图像ID。第二个代码是400,表示发生了未知错误。我认为这意味着它无法找到图像或类似的东西。如果我在阵列中切换两个帐户,那么它将成功发布到另一个帐户,并且会在刚刚成功的帐户上失败。
感谢您一路阅读到最后!这是你的金罐......
答案 0 :(得分:2)
我的答案在调试你的问题方面略有提及,并提供了一个可能的选择。去年,Facebook launched the ability通过提供源URL而不必提供多部分数据来上传照片。因此,我建议采用以下解决方法:
这会将照片直接发布到Page的时间轴。批量调用不应该有任何区别。希望这有帮助!