2016-04-27 4 views
0

私は私のレールプロジェクトでFacebook Graph APIを使用しています、私はoauth2宝石やkoalaを使用するに関係なく、それはcallback_urlFacebookのcallback_urlとはどのようにしてレールで使用するのですか?

を必要とするのOAuth2

token = client.auth_code.get_token('code_value', :redirect_uri => 'http://localhost:8080/oauth/callback')

コアラ

@oauth = Koala::Facebook::OAuth.new(app_id, app_secret, callback_url)

プロジェクトでhttp://localhost:3000/callbackを使用しようとしましたが、動作しません。

私はそれのためのルートを開発する必要がありますか?

like:get 'callback' => 'oauth#callback'

callbackメソッドで書かなければならないものは、OauthControllerにはどのようなものがありますか?ありがとう

答えて

2

はい、する必要があります。 OAuthは、基本的に、コールバックデータを使用してユーザーを認証するためのトークンを提供します。例

  • ユーザーの場合

    は、「サインイン」(または任意の)リンクをクリックすると、あなたのアプリがOAuthのプロバイダに彼らをリダイレクトする(またはiframe内にそれを開きます)。彼らはアプリがちょうどだAPI通信

のためのセキュアなアクセストークンを取得するためにそのコードを使用しています

  • ユニークなコードを使ってアプリに詳細
  • のOAuthプロバイダーの送信コールバックをプロファイルに使用するあなたのアプリへ
  • ユーザー許可基本的な例。

    あなたの場合、コールバックデータを解析するコントローラを実装する必要があります。ここで

    は、コード例

    @oauth = Koala::Facebook::OAuth.new(api_key, app_secret, callback_url) 
    => #<Koala::Facebook::OAuth:0x007fc919d014e0 @app_id=1234567890, @app_secret="FaKeAppSecretKey", @oauth_callback_url="http://localhost:3000/callback"> 
    
    @oauth.url_for_oauth_code 
    => "https://www.facebook.com/dialog/oauth?client_id=893637180663238&redirect_uri=http%3A%2F%2Flocalhost%3A3000%2Fcallback" 
    

    であり、あなたがhttps://www.facebook.com/dialog/oauth?client_id=893637180663238&redirect_uri=http%3A%2F%2Flocalhost%3A3000%2Fcallback FBに行くとき、あなたは

    アクセストークンを取得するためのコードを使用して、コントローラを実装して使用する必要があります

    http://localhost:3000/callback?code=CODE_FROM_CALLBACK 
    

    にリダイレクトされます

    access_token = @oauth.get_access_token(params[:code]) 
    => "ACCESS_TOKEN" 
    
    @graph = Koala::Facebook::API.new(access_token) 
    => #<Koala::Facebook::API:0x007fc91a903ae0 @access_token="ACCESS_TOKEN", @app_secret=nil> 
    
    profile = @graph.get_object("me") 
    => {"id"=>"4492344324865", "email"=>"[email protected]", "first_name"=>"Roman", "gender"=>"male", "last_name"=>"Sotnikov", "link"=>"https://www.facebook.com/app_scoped_user_id/4492344324865/", "locale"=>"en_US", "name"=>"Roman Sotnikov", "timezone"=>6, "updated_time"=>"2015-05-18T05:19:54+0000", "verified"=>true} 
    

    追加の場合はhttps://github.com/arsduo/koala/wiki/OAuthをご確認ください情報

  • +0

    @Stephen、有用であれば私の答えを正しいものとしてマークしてください。どうもありがとう! – retgoat

    +0

    こんにちは、あなたの答えに感謝します。たとえば、Facebookのユーザー名を 'index.html'ページに表示させる方法などのロジックを説明できますか?おかげ – Stephen

    +0

    確かに、私はhttps://gist.github.com/retgoat/93a83f3ed620b9f99242cb34c70165e2例をご例えば – retgoat

    1

    コールバックURLはあなたのアプリケーションのURLです--GETルート - サードパーティのアプリケーションをリダイレクトするには、その作業が完了した後でなければなりません。

    あなたのルートにあります。rbファイルは単にルートを作成するだけです。

    get 'facebook_graph_callback', to: 'controller_name#action' 
    #A get route which is connected to a controller action 
    

    通常、サードパーティはあなたに何らかの情報を返します。かなりの頻度で、ある種のコード。あなたのコントローラーアクションでは、それらをparamsハッシュで見つけることができます。

    関連する問題