ガイドミーではOpenIDを使って、GoogleやYahooアカウントでログイン(登録)出来るようになっています。
今回は、twitterアカウントでもログイン出来るようにしてみました。
以下、技術的な説明になります。
1. 前提
プログラム言語はphp5を使用します。
phpをconfigureする際に
–with-curl
を付けて、curlモジュールを利用可能にします。phpでこのモジュールが使えないと動きません。
2. twitteroauthのインストール
twitter用のoauthライブラリであるtwitteroauthをダウンロードします。
https://github.com/abraham/twitteroauth
この中で~/twitteroauth以下の
OAuth.php
twitteroauth.php
のみあればOKです。
3. twitterアプリケーションアカウントの作成
twitterの開発者用サイトで自分のサービス用アカウントを作成します。
アプリケーション登録パラメータの意味は下記の通りです。
・アプリケーションの種類:ブラウザアプリケーション
・コールバックURL: twitrer認証後に自分のサイトに戻ってくるURLとなります。
・Consumer key: twitter認証用 (登録後発行されます)
・Consumer secret: twitter認証用 (登録後発行されます)
4. プログラムの作成
twitterアカウントでログインするには以下の2つのステップを踏みます。
ステップ1.自分のサイト(アプリケーション)のtwitterでの認証
このステップは自分のサイト内に用意したtwitterログイン用プログラム内で実行されます。
以下のようなプログラムになります。認証用URLを取得後、twitterサイトにジャンプします。
$request_token = $to->getRequestToken();
$url = $to->getAuthorizeURL($request_token);
header(“Location: $url”); // $urlは上記関数で得られたtwitterサイトの認証用URL
ステップ2.発行された認証用パラメータを使ってtwiterユーザアカウントの取得
このステップは上記のコールバックURL内で実行されます。
ステップ1の認証後、$_REQUEST変数にユーザ認証用パラメータが渡ってきます。そのパラメータを使い、twitterからユーザアカウントを取得します。以下のようなプログラムになります。
$acc = $to->getAccessToken($_REQUEST[’oauth_verifier’]);
twitterから返されるユーザアカウント情報は以下のような連想配列になっています。
“oauth_token_secret” => “the-access-secret”,
“user_id” => “9436992”,
“screen_name” => “abraham”,
“x_auth_expires” => “0”)
$acc[user_id]を自分のサイトでのユーザアカウントと紐付けしてDB保存して使います。
既に紐付いてたらログイン成功後ページへジャンプさせてあげます。そうでない場合は自分のサイトに必要な条件を入力させて自分のサイト内のユーザIDと紐付けてユーザ登録します。