F.Ko-Jiの「一秒後は未来」

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

色々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を使うやり方が大体わかったので、あとは色々連携機能を考えていくつもりです。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

著者について

fkoji

F.Ko-Ji

Webエンジニアやってます。最近は ドットインストール の開発がお仕事です。その傍ら、個人で Meity電車遅延なう梅酒.in#グラドル自画撮り部 の部室といったネットサービスを開発・運営してます。梅酒と草野球とリアル脱出ゲームが好きです。

» 詳しいプロフィールや運営サービスの一覧など