PHPで「Sign in with Twitter」を実装する方法

方法も何も、これさえできていれば

一カ所書き換えるだけ。

事前の準備

アプリケーションを Sign in with Twitter に対応させときましょう。

  1. https://twitter.com/apps に行く。
  2. 対象となるアプリケーションを選ぶ。(アプリケーション未登録の場合は上掲の記事に登録方法を書いているのでまずはそちらへ。)
  3. “Edit Application Settings” のボタンを押す。
  4. 一番下のあたりにある “Use Twitter for login” のところにチェックを入れて “Save” のボタンを押す。

はい完了。

Sign in with Twitter のやり方

OAuth でユーザーに承認してもらうとき、通常なら
http://twitter.com/oauth/authorize
に行ってきてもらうんだけど、これを
http://twitter.com/oauth/authenticate
にするだけ。

上掲の記事のサンプルで言えば、
「リクエストトークン、認証用 URL を取得」という項の

$auth_url = $consumer->getAuthorizeUrl('http://twitter.com/oauth/authorize');

$auth_url = $consumer->getAuthorizeUrl('http://twitter.com/oauth/authenticate');

にするだけ。

authorize だとユーザーは必ず承認画面に連れて行かれるんだけど、
authenticate だと次のような動作になる。

  • ユーザーが呼び出し元アプリケーションを承認している場合
    • ユーザーが Twitter にログインしている場合:直ちに承認されて、呼び出し元のアプリケーション(callback URL)にリダイレクトされる。
    • ユーザーが Twitter にログインしていない場合:Twitter のログイン画面が表示され、ログイン後は直ちに承認されて、呼び出し元のアプリケーションにリダイレクトされる。
  • ユーザーがまだ呼び出し元アプリケーションを承認していない場合、あるいは承認を取り消している場合
    • ユーザーが Twitter にログインしている場合:OAuth の承認画面が表示され、承認後は呼び出し元のアプリケーションにリダイレクトされる。
    • ユーザーが Twitter にログインしていない場合:まず Twitter のログイン画面が表示され、ログイン後に OAuth の承認画面に移り、承認後は呼び出し元のアプリケーションにリダイレクトされる。

こう書くとややこしいけど、一番簡単なパターンだと

  1. ユーザーがこちらのサイトに来ましたよ。
  2. ユーザーが “Sign in with Twitter” ボタンを押しましたよ。
  3. はいログイン完了。

という感じでしょうか。

何が嬉しいのか

Twitter とこちらのサイトへのログインを一緒にできるため

  • こちらのサイトと Twitter の連動が簡単になる。
  • こちらのサイトにログインの仕組みを作らなくてもいい(もちろん作ってもいい。)
  • パスワードを預からなくてもいい。
  • ユーザーが複数の Twitter アカウントを使い分けるのも簡単。

などいろいろメリットがありますね。

Sign in with Twitter 用ボタン

それ用のボタンが提供されているので
これを使ったらいいんじゃないですか。

各自でダウンロードね。

なお、Twitter によると

Twitter API Wiki / Sign in with Twitter

Twitter would prefer your application to use the following buttons. While it is easy roll your own buttons or create text links, using these standard buttons will instill user confidence and standardize the experience.

Twitter としてはこのボタンを使ってくれた方が嬉しいな。もちろん自作のボタンやテキストリンクでもいいんだけど、公式のボタンをみんなで使った方がユーザーが慣れてくれるし、安心して押してくれるでしょ。

(薄字部分は引用者訳。)

だそうです。

  • このエントリーをはてなブックマークに追加