概要
OAuthでomniauth-facebookが何をやっているかを見てみたのtwitter版。
ほぼomniauth-facebookの時と同じ内容になってしまったので、
↑を読んだ方はスルーしてOKだと思います。
対象バージョン
- omniauth (1.2.2)
- omniauth-oauth2 (1.0.1)
- omniauth-twitter (1.1.0)
omniauth-twitter
基本的にomniauth-facebookと同じ。
↑の記事を参照。
継承関係
OmniAuth::Strategies::Twitterの継承関係もomniauth-facebookの時とほぼ同じ。
OmniAuth::StrategyはOmniAuth::Strategies::OAuthにincludeされている。
シーケンス
TwitterとのOAuthは1系なのでFacebook(2.0系)とは異なる。
が、大きな流れは同じ。
TwitterとのOAuthは、最初にリクエストトークンを取得して、これを用いて認証・認可をする。
- TwitterへのOAuthリクエスト (下図 2)
- /users/auth/twitterへのリクエストをフックする
- consumer_keyを使ってrequest_tokenを取得する
- Twitterでの認証 (下図 3,4)
- 認証・アプリ認可する
- Callback処理 (下図 5)
- request_tokenとconsumer_keyを元にアクセストークン取得
- アクセストークンを使ってユーザ情報取得
- ユーザ情報からAuthHashを生成してenvに埋める
- アプリをコールする
AuthHashはアプリケーションで認証情報やユーザ情報を扱うための情報が入ったhash。
詳細はこちらを参照。
クラス図
主な登場人物は
- application
- omniauth-twitter (omniauth, omniauth-oauth)
- oauth
omniauth-twitterとtwitterとのやりとりはoauthを通して行われる。
特に通信部分に関しては、OAuth::Consumerを通じてNet::HTTPで行われる。
OAuthの基本的な登場人物 (アクセストークン、Authorization Code等)はOAuthに抽象化されていることが分かる。
この辺りもomniauth-facebookと同じ。