2012-04-10 24 views
5

ルビーでプログラムでfacebookのoauthアクセストークンを取得しようとしています。次のようにルビーを使って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/[email protected]/gems/oauth2-0.5.2/lib/oauth2/clie 
nt.rb:129:in `get_token': OAuth2::Error (OAuth2::Error) 
     from /home/ec2-user/.rvm/gems/[email protected]/gems/oauth2-0.5.2/li 
b/oauth2/strategy/auth_code.rb:29:in `get_token' 
     from oauth.rb:16:in `<main>' 

次の例外を取得していますこれを整理しようとしている間に1日以上。

+0

アイデアをいただければ幸いです! –

+0

回答の受諾率を上げる必要があります。 –

+0

しかし、ここにあなたを始めるための何かがあります:あなたのredirect_uriはFacebook.comのようですが、それらはあなたのURLでなければなりません。 –

答えて

2

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

+0

私は 'redirect_uri'がおそらく問題であることに同意します。リダイレクトを実行するAPIは、許可されたアプリケーションに関連付けられたURIにのみリダイレクトできます。 (私はFacebookがこれをしているのかどうかはわかりませんが、他のOAuth APIと一緒に作業しています)。 – pjmorse

関連する問題