ネットサービスとかGoogleとか豆知識とか。

Index > API > TwitterでOAuth認証した後どうするか
API
2010年02月02日 23:54

TwitterでOAuth認証した後どうするか

  • このエントリーをはてなブックマークに追加
  • ... PV
スポンサード リンク

色々Twitter連携するにはOAuth認証を扱えるようにしておかないと、というわけで以前やりかけて放置していたOAuthをイチからやり直してみました。

PHPで書いてるので参考にしたのは「PHPでTwitter APIのOAuthを使う方法まとめ - 頭ん中」です。PEARのHTTP_OAuthを使っていてとてもわかりやすかったです。

コードの書き方は上のエントリーを参考にしてもらうとして、ここでは認証した後どうすればいいのか考えたことをつらつら書いておきます。

認証が通るとアクセストークンを取得できて、そのトークンを利用するとユーザーのデータにアクセスできます。なので取得したアクセストークンをデータベースに保存しておくわけですが、TwitterのOAuth認証画面(アクセスを許可するかどうか選択する画面)で許可されるたびにアクセストークンが再発行されるようなので、すでにトークンを取得済みなら認証画面にアクセスさせないとか、再発行されたアクセストークンでデータベースを更新するといった処理が必要です。

トークンの有効期限はおそらくない?と思うのですが、よくわかってません。

また、アクセストークンを取得できてもそのユーザーが誰なのかはまだ分からないので、おそらく account/verify_credentials というメソッドをリクエストしてユーザー情報を取得するんだと思います。

自分のアプリケーションと連携する場合は、アプリケーションで利用しているセッション管理の仕組みと組み合わせてあげます。ユーザーのアカウントとTwitterアカウントを連携させる場合は、認証が通った後にTwitterのユーザー情報を取得して、そこからTwitterのユーザーIDだけユーザーと紐付けておけばいいと思います。screen_nameは変更可能なので紐付けには適しません。

APIのレスポンスはXMLよりJSONのほうが軽いし扱いやすいので、JSONで取得してそのままデータベースとかキャッシュとかに放り込んでおけばいいのかなと思います。

あと、データベースに保存するアクセストークンは扱いとしてはパスワードと同じものなので、必ず暗号化して保存しておく必要があります。ただし、Twitter APIをリクエストする際に復号する必要があるので、復号可能な暗号化方式で暗号化します。自分の場合は PEARのCrypt_Blowfishを使ってみました。

$key = base64_encode('暗号化用のキー');
$blowfish = new Crypt_Blowfish($key);
$accessToken = $blowfish->encrypt(base64_encode('アクセストークン'));

のように手軽に使えます。

HTTP_OAuthを使うやり方が大体わかったので、あとは色々連携機能を考えていくつもりです。