所以这就是我想要做的。我正在尝试使用Facebook批处理API将单张照片同时发布到多个Facebook页面。我首先将所有内容放入数组(fb_batch)中,然后使用JSON对其进行编码。此方法适用于发布消息和链接。在下面的示例中,@pages数组是包含Facebook页面信息(包括有效的访问令牌)的Facebook页面数组。我知道访问令牌是有效的,因为在程序中的其他地方,我可以使用相同的访问令牌发布个人照片。使用Facebook的批量API张贴相同的照片到多个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数组,但所有其他帐户都有错误。我是否需要为每个帐户分别附加图像,以便将照片发布到每个具有不同attached_file名称的图像上?对我来说,这意味着该请求会很大,因为如果我发布到50个帐户,我可能需要将相同的图像附加50次。
这里是我从Facebook得到响应:
[{ “代码”:200, “报头”:[{ “名称”: “访问控制允许来源”, “值”:” *“},{”name“:”Cache-Control“,”value“:”private,no-cache,no-store,must-revalidate“},{”name“:”Connection“,”value“:”关闭“},{”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 \”} “},{” 代码 “:400,” 报头 “:[{” 名称 “:” 访问控制允许来源”, “值”: “*”}, {“名称”:“缓存控制”,“值”:“无存储”},{“名称”:“连接”,“值”:“关闭”},{“名称”:“内容类型” ,“value”:“text/javascript; charset = UTF-8”},{“name”:“Expires”,“value”:“星期六,2000年1月1日00:00:0 0 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倍。 – bloveless 2012-07-26 21:18:25