2014年4月7日月曜日

PHP:OAuth 関数群で Twitter 認証 その3

前回は Twitter から未認証リクエストトークンを取得するところまでやりました。
今回はユーザの許可を得る部分をやります。



OAuth では ID や パスワードを使った認証部分を Web サービスに任せたまま、
ユーザデータを外部から使用することができます。
Twitter の場合だとユーザ情報を取得したりツイートしたりすることができます。
そのため、必ずユーザへどのようにデータを使用するかを説明したうえで、
ユーザデータを使用する許可を得なければなりません。



Twitter の場合は上のようにお馴染みの画面で許可を得ることができます。
未認証リクエストトークンを GET パラメータとして付加して、
Twitter の認証ページヘリダイレクトすればよいです。

// リクエストトークンの取得
$tokens = $oauth->getRequestToken('https://api.twitter.com/oauth/request_token');

// Twitter 認証ページヘリダイレクト
http_redirect('https://api.twitter.com/oauth/authorize', array('oauth_token' => $tokens['oauth_token']));

// リダイレクトは以下でもOK
header('Location: https://api.twitter.com/oauth/authorize?oauth_token=' . $tokens['oauth_token']);


リダイレクトには http_redirect() を使用していますが、header() でもよいです。
これによって上の画像のように認証ページヘジャンプします。

認証が完了すると Twitter へ登録したコールバック URL へ戻ってきます。
コールバックされた時に GET パラメータへ設定されている oauth_token が、
認証済みのリクエストトークンなので、コールバック先の PHP で取得します。
ユーザが許可しなかった場合には danied パラメータが付加されるので
こちらもチェックしておきます。

// ツイッターへのログイン失敗
if(isset($_GET['denied'])) {
    echo '許可がおりませんでした';
} else {
    $token = $_GET['oauth_token'];
}

次回へ続きます。

0 件のコメント:

コメントを投稿