だからここに私がやろうとしていることがあります。FacebookバッチAPIを使用して、1枚の写真を複数の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 回添付しなければならない可能性があるため、リクエストが膨大になることを意味します。
以下はフェイスブックからの回答です。
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 プラットフォーム\" \"invalid_request\" \"(#1) 不明なエラーが発生しました\""}], "body":"{\"error\":{\"message\":\"(#1) 不明なエラーが発生しました\",\"type\":\"
雑ですみません。最初のコードは 200 で、画像が正常に投稿され、画像 ID が返されていることがわかります。2 番目のコードは 400 で、不明なエラーが発生しました。これは、画像などを見つけることができなかったことを意味すると思います。配列内の 2 つのアカウントを切り替えると、他のアカウントに正常に投稿され、成功したばかりのアカウントでは失敗します。
最後まで読んでくれてありがとう!これがあなたの金の鍋です...