私は Koala gem を使用して、Facebook の投稿に関する指標 (いいね!、コメント、共有) を取得しています。私は文字通り数か月間 Koala コードに触れていませんでしたが、突然動作しなくなりました。いいねやコメントはできますが、シェアはできません。gem のドキュメントと GitHub の問題を確認しましたが、私の問題に関連するものは何も見つかりませんでした。それが私のコードなのか、gem なのか、Facebook の API の変更なのかはわかりません。
私は次のメソッドを持っています。これは別のメソッドによって呼び出され、投稿のすべてのメトリックを更新する責任があります。
def call_facebook_api(client, method, pid, metric)
resp = client.method(method).call(pid, metric)
rescue Koala::Facebook::ClientError => e
puts "Rescue from #{e}"
puts "Method: #{method}"
puts "Metric: #{metric}"
puts "Post ID: #{pid}"
return nil
end
メソッド引数のサンプル値を次に示します。
client
=> #<Koala::Facebook::API:0x007fbbfdf25dd0 @access_token="super_secret",@app_secret="super_duper_secret">
method
=> :get_object
pid
=> "202001613484188_1142111705834093"
metric
=> {:fields=>["shares"]}
これらの入力で上記のメソッドを実行すると、次のエラーが返されます。
Koala::Facebook::ClientError: type: GraphMethodException, code: 100, message: Unsupported get request. Please read the Graph API documentation at https://developers.facebook.com/docs/graph-api [HTTP 400]
from /Users/ACIDSTEALTH/.gem/ruby/2.3.0/gems/koala-2.2.0/lib/koala/api/graph_api.rb:515:in `block in graph_call'
また、次の組み合わせを試しましたが失敗しました。
client.get_object(pid)
client.get_object(pid, fields: ['shares'])
client.get_object(pid, 'shares')
client.get_object("#{pid}/sharedposts")
client.get_object("#{pid}?fields=sharedposts")
client.get_object("#{pid}?fields=shared")
client.get_object("#{pid}?fields=shares")
client.get_connections(pid)
client.get_connections(pid, 'shares')
client.get_connections("#{pid}/sharedposts")
Graph API のドキュメントを参照しても、問題に関する新しい洞察は得られませんでした。
前に言ったように、私は上記のコードに何ヶ月も触れていませんが、最近動かなくなったばかりです。最近、Rails アプリを 4.06 から 4.2.5.1 にアップグレードしました。また、Ruby 2.0.0 から 2.3.0 にアップグレードしました。ただし、コアラの宝石はアップグレードしませんでした。私はすでに 2.2.0 (最新) を実行していました。