[devel][gae][twitter] oauth認証の雰囲気
twitterで使う、OAuth認証のイメージ、概略、雰囲気、そんなもののメモ。
以前やったけどほとんど忘れたので。
用語はメチャクチャ。
自分が使ってるサービスのパスワードを渡さずに、サードパーティーアプリに読み書きなどの権限を与える仕組み。
大きく分けて2段階ある。
利用者とアプリのマッチングの認証、そして実際のapiアクセス。
この三者
これで完了。
もう少し具体的に。
- アプリケーションは、twitterアプリとして、自分をtwitterサーバに登録し、登録コードを取得する。
- 利用者は、アプリケーションの利用開始手続きをする。認証ボタンクリックとかそんな感じ。
- アプリケーションは、自分の登録コードをtwitterサーバに送り、 認証手続き開始をリクエストする。
- アプリケーションからのリクエストを受けたtwitterサーバは利用者に確認のページを提示する。まあ、アプリケーションが開いた新ウインドウがそこに遷移するか、新たにブラウザを立ち上げて表示することになる。
- 必要であればここで利用者はtwitterにログインする。そうでなければその利用しているブラウザでログイン状態にあるtwitterアカウントが対象になる。
- 利用者が確認OK、認証しますボタンを押すと、その認証を示すコードが発行される
- 利用者はその認証コードをアプリケーションに渡す。
- めでたく手続き完了。
上の文でアプリの登録コードに相当するのがConsumer key、Consumer secret。
認証コードがPINコード。
アプリなのにコンシューマーとはこれ如何に?
サーバからすれば、APIの消費者だからか。
また、なんで二つあるのかはよく知らない。
ただ、secretの方は、その名の通り秘密に。
どちらにしても、これ用のライブラリを使う時に、必要な変数に入れてやればいいだけ。
twitterのボットなどを作った場合、開発者としてのtwitterアカウントでhttps://dev.twitter.com/にアプリを登録し、そのアプリの利用者としてのtwitterアカウントでそのアプリを認証する、ってことになる。
で、利用者視点ではこれで終わりだけどアプリ側ではもう一つ。
apiへのアクセストークンというものを取得する必要がある。
つまり、利用者との連携許可とtwitterサーバapiアクセス許可の二段構えになっている。
このトークンも二つあって、片っ方がsecret。
これもよく知らないけど、実際には使うライブラリの適当な変数にセットするだけ。
都合4つのkey、トークンを使ってtwitter-apiを使うことになる。
pythonでtweepyを使用する場合、アプリ登録より先の認証手続きは http://gitorious.org/tweepy/examples/blobs/master/oauth/getaccesstoken.py がやってくれる。
pinコード部分は自分の手でやるのはもちろんだけど。
で、使う時も取得したものをtweepyの変数にセットするだけ。
https://github.com/tweepy/tweepy
参考 もうPythonのマイクロフレームワーク「Flask」でもApp EngineのTwitter Botは15行じゃ書けない -
あれっアプリ登録者とアプリ利用者のtwitterアカウントが同一の時はPINコード部分はいらないのかな?
登録アプリのとこでアクセストークンが直接取得できるけど。