5

ruby でプログラムによって facebook の oauth アクセス トークンを取得しようとしています。

私のコードは次のとおりです。

client = OAuth2::Client.new(
  APP_ID,
  SECRET_ID,
  :authorize_url => "/dialog/oauth",
  :token_url => "/oauth/access_token",
  :site => "https://www.facebook.com/"
)

code = client.auth_code.authorize_url(:redirect_uri => "http://www.facebook.com/")
token = client.auth_code.get_token(code, :redirect_uri => "https://graph.facebook.com/")
OAuth2::AccessToken.new(client, token.token, {:mode => :query, :param_name =>"oauth_token"})

上記の Ruby コードを実行しようとすると、次の例外が発生します。

https://www.facebook.com/dialog/oauth?response_type=code&client_id=APP_ID
51&redirect_uri=http%3A%2F%2Fwww.facebook.com%2F

/home/ec2-user/.rvm/gems/ruby-1.9.3-p0@samples/gems/oauth2-0.5.2/lib/oauth2/clie
nt.rb:129:in `get_token': OAuth2::Error (OAuth2::Error)
        from /home/ec2-user/.rvm/gems/ruby-1.9.3-p0@samples/gems/oauth2-0.5.2/li
b/oauth2/strategy/auth_code.rb:29:in `get_token'
        from oauth.rb:16:in `<main>'

これを整理しようとして1日以上費やしたので、どんな助けも大歓迎です.

4

1 に答える 1

2

localhost:3000実際の IP アドレスの代わりに redirect_uri として設定しようとしましたex. 231.61.233.57:3000か? さらに、テスト目的で ssh トンネリングを使用して、localhost アプリケーションを世界中で利用できるようにすることもできます。http://progrium.com/localtunnel/をチェックしてください。このツールから IP アドレスを取得する場合は、redirect_uri パラメータをそれに設定してみてください。

于 2012-04-19T16:03:18.910 に答える