2016-04-19 9 views
1

のドキュメントomniauth-facebookにはコールバックがたくさんあると書かれていますが、ドキュメント内にコールバックはありません。認証作業を行うためにコールバックを書く必要はありませんでした。omniauth-facebookとの統合でコールバックとは何ですか?

ドキュメント:たとえばhttps://github.com/plataformatec/devise/wiki/OmniAuth:-Overview

上記のリンクをクリックすることで、ユーザーは のFacebookにリダイレクトされます。 (このリンクが存在しない場合は、サーバーを再起動してください。) 資格情報を挿入すると、アプリケーションのコールバックメソッド にリダイレクトされます。

devise_for :users, :controllers => { :omniauth_callbacks => "users/omniauth_callbacks" } 

コールバック・コントローラは

class Users::OmniauthCallbacksController < Devise::OmniauthCallbacksController 
    def facebook 
    @user = User.from_omniauth(request.env["omniauth.auth"]) 

    if @user.persisted? 
     sign_in_and_redirect @user, :event => :authentication #this will throw if @user is not activated 
     set_flash_message(:notice, :success, :kind => "Facebook") if is_navigational_format? 
    else 
     session["devise.facebook_data"] = request.env["omniauth.auth"] 
     redirect_to new_user_registration_url 
    end 
    end 

    def failure 
    redirect_to root_path 
    end 
end 

は、私はここに明示的に記述されたコールバックが表示されていないので、私は舞台裏で起こって何かがあると仮定します。

私は一種の混乱している。しかし - 何がコールバックを実際にやっていると、コールバックは、このコードのどの部分ですか?事前に

謝罪これはスーパー初心者の質問である場合。

答えて

1

OmniAuthのコールバックは、認証後にユーザーがリダイレクトされる戻りURLです。外部サービスがアプリケーションを呼び出すエンドポイントです。 「コールバック」という用語は、サーバー側のプログラミングに関しては、このように頻繁に使用されます。

したがって、この場合にはUsers::OmniauthCallbacksController#facebookは、この認証プロバイダのための「コールバック」ハンドラです。

これは、関数を渡すことによるイベント指向プログラミングであるコールバックのJavaScriptの概念とは全く異なる概念です。

+0

'コールバックハンドラ 'は、ユーザをリダイレクトするコードの一部を意味するだけですか? –

+1

いいえ、Facebookは承認ダイアログの後にリダイレクトする通常のコントローラアクションです。 – max

関連する問題