Facebook の Open Graph を作成中の Rails アプリケーションに統合することをテストするための小さなサイド プロジェクトを作成していますが、奇妙な問題が発生しています。(アプリケーション内で) ユーザーを Facebook アカウントにリンクし、開いているグラフの更新を正常に投稿できますが、アプリを Facebook アカウントに接続解除し、Facebook 内で生成されたテスト ユーザーにリンクすると、次のエラーが表示されます。
u.facebook.put_connections("me", "goodgym:accept", mission: "http://4ztq.localtunnel.com/missions/1")
Koala::Facebook::APIError: HTTP 500: Response body: {"error":{"message":"An unexpected error has occurred. Please retry your request later.","type":"OAuthException","code":2}}
from /Users/idrysdale/.rvm/gems/ruby-1.9.3-p194@rails327/gems/koala-1.5.0/lib/koala/api.rb:56:in `api'
from /Users/idrysdale/.rvm/gems/ruby-1.9.3-p194@rails327/gems/koala-1.5.0/lib/koala/api/graph_api.rb:424:in `graph_call'
from /Users/idrysdale/.rvm/gems/ruby-1.9.3-p194@rails327/gems/koala-1.5.0/lib/koala/api/graph_api.rb:134:in `put_connections'
from (irb):3
from /Users/idrysdale/.rvm/gems/ruby-1.9.3-p194@rails327/gems/railties-3.2.7/lib/rails/commands/console.rb:47:in `start'
from /Users/idrysdale/.rvm/gems/ruby-1.9.3-p194@rails327/gems/railties-3.2.7/lib/rails/commands/console.rb:8:in `start'
from /Users/idrysdale/.rvm/gems/ruby-1.9.3-p194@rails327/gems/railties-3.2.7/lib/rails/commands.rb:41:in `<top (required)>'
from script/rails:6:in `require'
from script/rails:6:in `<main>'
user.rb モデルで定義するように、Facebook メソッドを使用しています。
def facebook
@facebook ||= Koala::Facebook::API.new(oauth_token('facebook'))
block_given? ? yield(@facebook) : @facebook
rescue Koala::Facebook::APIError => e
logger.info e.to_s
nil # or consider a custom null object
end
OmniAuth は次のように設定されています。
Rails.application.config.middleware.use OmniAuth::Builder do
provider :facebook, ENV['FACEBOOK_APP_ID'], ENV['FACEBOOK_SECRET'], scope: "email, publish_stream"
end
なぜこれが私のアカウントでは機能するのか理解できませんが、テスト ユーザーでは機能しません (私が知る限り、他のすべての設定は同じであり、両方ともアプリを承認しているとします)。
セットアップの背景を少し説明するために、新しい Facebook アプリケーションを登録しました ( http://railscasts.com/episodes/360-facebook-authentication?view=asciicastの指示にほぼ従っています) 。
次に、アプリケーションをテストするために Facebook 内にロールを作成しました。
次に、Rails アプリで OAuth を使用して Facebook に接続し、トークンを正常に生成しました。
次に、Koala を使用して、Facebook の Open Graph を使用して投稿します。
これが私のアカウントで機能しているのに、テストロールでは機能していない理由について誰か考えがありますか? それができない場合は、これをデバッグする方法についての指針をいただければ幸いです。その予期しないエラーはあまり役に立ちません。
ありがとう!