twitterアカウントでのログインサービス

ガイドミーでは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の開発者用サイトで自分のサービス用アカウントを作成します。

http://dev.twitter.com/apps

アプリケーション登録パラメータの意味は下記の通りです。

・アプリケーションの種類:ブラウザアプリケーション

・コールバックURL: twitrer認証後に自分のサイトに戻ってくるURLとなります。

・Consumer key: twitter認証用 (登録後発行されます)

・Consumer secret: twitter認証用 (登録後発行されます)

4. プログラムの作成

twitterアカウントでログインするには以下の2つのステップを踏みます。

ステップ1.自分のサイト(アプリケーション)のtwitterでの認証

このステップは自分のサイト内に用意したtwitterログイン用プログラム内で実行されます。

以下のようなプログラムになります。認証用URLを取得後、twitterサイトにジャンプします。

$to = new TwitterOAuth($consumer_key, $consumer_secret); // 上記3で取得した認証キー
$request_token = $to->getRequestToken();
$url = $to->getAuthorizeURL($request_token);
header(“Location: $url”); // $urlは上記関数で得られたtwitterサイトの認証用URL

ステップ2.発行された認証用パラメータを使ってtwiterユーザアカウントの取得

このステップは上記のコールバックURL内で実行されます。

ステップ1の認証後、$_REQUEST変数にユーザ認証用パラメータが渡ってきます。そのパラメータを使い、twitterからユーザアカウントを取得します。以下のようなプログラムになります。

$to = new TwitterOAuth($consumer_key,$consumer_secret, $_REQUEST[‘oauth_token’], $_REQUEST[’oauth_verifier’]);
$acc = $to->getAccessToken($_REQUEST[’oauth_verifier’]);

twitterから返されるユーザアカウント情報は以下のような連想配列になっています。

array(“oauth_token” => “the-access-token”,
“oauth_token_secret” => “the-access-secret”,
“user_id” => “9436992”,
“screen_name” => “abraham”,
“x_auth_expires” => “0”)

$acc[user_id]を自分のサイトでのユーザアカウントと紐付けしてDB保存して使います。

既に紐付いてたらログイン成功後ページへジャンプさせてあげます。そうでない場合は自分のサイトに必要な条件を入力させて自分のサイト内のユーザIDと紐付けてユーザ登録します。