TwitterOAuthを使ってTwitterでログイン機能を実装してみる

スポンサーリンク

前回の Facebookでログイン機能を実装してみる ではFacebookでログイン機能を実装しましたが、今度はTwitterを使ったログイン機能を実装してみました。

TwitterOAuthをダウンロード

下記URLへアクセスしてTwitterOAuthをダウンロードします。
https://twitteroauth.com/

URLへアクセスして、上部メニューにある「Source」をクリックします。
スクリーンショット_2016-02-15_13_39_00

githubのページへ遷移します。引き続きページ内の「Download ZIP」をクリックしてコアのソースファイルをダウンロードします。
スクリーンショット_2016-02-15_13_41_19

「twitteroauth-master.zip」という圧縮フォルダーがダウンロードされたら完了です。

TwitterのAPI Keyを発行する

次にTwitterの公式デベロッパーサイトでAPIのKeyを発行します。

Twitterのデベロッパーサイトにアクセスします。
https://apps.twitter.com/

上記ページヘ遷移したら下記ページが表示されますので「Create New App」をクリックします。
スクリーンショット_2016-02-26_18_36_01

「Create New App」をクリックすると、下記入力フォーム画面に遷移するのでそれぞれ入力します。

Nameにアプリケーションの名前を入力します。最大32文字まで。
Descriptionにアプリケーションの説明文を入力します。10〜200文字以内。
Websiteにアプリケーションのアクセス元URLを入力します。
Callback URLに情報の返し先URLを入力します。

スクリーンショット_2016-03-02_16_02_54

情報を入力したら、ページ下部にある「Yes, I agree」にチェックを入れて、「Create your Twitter application」をクリックします。
スクリーンショット_2016-02-26_18_50_14

クリック後、下記画面が表示されたらTwitter applicationの完成です。
スクリーンショット_2016-03-02_16_13_37

TwitterOAuthのセットアップ

先ほどダウンロードした「twitteroauth-master.zip」を解凍します。解凍すると「twitteroauth-master」というフォルダーが出来上がりますのでフォルダー名をリネームします(※任意です)。ここでは「twitteroauth」とします。
その他に、
Twitterの認証前のリクエストページは「login.php」
Twitterの認証後のレスポンスページは「callback.php」
Twitterアプリケーションの設定値を「common.php」
として、作成していきます。

スクリーンショット_2016-03-03_14_26_22

まず、Twitterアプリケーションの設定値をcommon.phpに記述します。

<?php
// Twitterのコンシュマーキー
define('ConsumerKey', '△▲△▲△▲△▲△▲△▲');
// Twitterのコンシュマーシークレットキー
define('ConsumerSecret', '△▲△▲△▲△▲△▲△▲△▲');
// コールバックURL
define('Callback', 'http://example.com/callback.php');
?>

TwitterのコンシュマーキーとTwitterのコンシュマーシークレットキーは、先ほどのTwitterのデベロッパーサイトで確認します。デベロッパーサイトにアクセスしたら該当のTwitterアプリケーションを選択して、「Keys and Access Tokens」をクリックしてください。すると下記のように確認が可能です。
スクリーンショット_2016-03-03_14_35_30
コールバックURLには、結果を受信する先のURLを入力します。

次に、Twitterへの認証リクエストページ(login.php)を作成します。

<?php

// セッション開始
session_start();

// TwitterOAuthのコアファイルとTwitterアプリケーションの設定値を読み込み
require_once 'common.php';
require_once 'twitteroauth/autoload.php';
    
// 「Twitterのコンシュマーキー」と「Twitterのコンシュマーシークレットキー」を使ってインスタンス化
$twitter = new Abraham\TwitterOAuth\TwitterOAuth(
            ConsumerKey, 
            ConsumerSecret
        );

//コールバックURLをセットして認証トークンのリクエストを発行
$request_token = $twitter->oauth('oauth/request_token', array('oauth_callback' => Callback));

// 上記で受け取った「oauth_token」と「oauth_token_secret」をセッションに代入
// ここでセッションに入れる理由はcallback.phpで認証を行うためです。
$_SESSION['oauth_token'] = $request_token['oauth_token'];
$_SESSION['oauth_token_secret'] = $request_token['oauth_token_secret'];

// Twitterの認証画面へリダイレクト
$url = $twitter->url('oauth/authenticate', array('oauth_token' => $request_token['oauth_token']));

header('location: '. $url);
exit;

まず11行目で、TwitterOAuthをインスタンス化します。その際、引数に「Twitterのコンシュマーキー」「Twitterのコンシュマーシークレットキー」を持たせます。

インスタンス化後、17行目で認証トークンを発行します。この発行されたトークンの中にある「oauth_token」と「oauth_token_secret」をセッションに代入します。

24行目で発行したトークンをパラメーターに持たせて、Twitterの認証ページヘリダイレクトさせます。

最後に、Twitterの認証後のレスポンスページ(callback.php)を作成します。

<?php

// セッション開始
session_start();

// TwitterOAuthのコアファイルとTwitterアプリケーションの設定値を読み込み
require_once 'common.php';
require_once 'twitteroauth/autoload.php';

// セッション情報を変数に代入
$request_token['oauth_token'] = $_SESSION['oauth_token'];
$request_token['oauth_token_secret'] = $_SESSION['oauth_token_secret'];

// 本人確認
if (isset($_REQUEST['oauth_token']) && $request_token['oauth_token'] !== $_REQUEST['oauth_token']) {
    die( 'えらーです。' );
    exit;
}

//OAuth トークンも用いて TwitterOAuth をインスタンス化
$twitter = new Abraham\TwitterOAuth\TwitterOAuth(
                    ConsumerKey, 
                    ConsumerSecret, 
                    $request_token['oauth_token'], 
                    $request_token['oauth_token_secret']
            );

// tokenを取得
$result = $twitter->oauth("oauth/access_token", array("oauth_verifier" => $_REQUEST['oauth_verifier']));

$getUser = new Abraham\TwitterOAuth\TwitterOAuth(
                    ConsumerKey, 
                    ConsumerSecret, 
                    $result['oauth_token'], 
                    $result['oauth_token_secret']
            );

// ユーザ情報取得
$user = $getUser->get("account/verify_credentials");

// ユーザ情報の展開
var_dump($user);

11、12行目で「login.php」で発行したセッション値を変数に代入します。この変数は15行目で本人確認を行います。

21行目でセッション値を使ってインスタンス化し、29行目でアクセストークンを発行します。さらに発行したアクセストークンを使って31行目でインスタンス化し、39行目でユーザ情報を取得します。

入力が終わったら、「common.php」と「login.php」と「callback.php」をサーバーにアップロードします。

TwitterOAuthを使ったログインを試してみる

アップロード後、「login.php」へアクセスして下記Twitterのページヘリダイレクトされたら成功です。
スクリーンショット_2016-03-04_16_55_02

「hogehoge-desu」や「hogehogeです」などTwitterアプリケーションで設定した値を確認することができます。引き続きページ内の「ユーザ名 or メールアドレス」と「パスワード」フォームに入力します。

入力してログインをすると、下記のように読み込みが始まります。
スクリーンショット_2016-03-04_17_00_15

すると、コールバックURL(callback.php)にリダイレクトされ、値が返ってきます。下記のような感じ。
※モザイクばかりですみません。
スクリーンショット_2016-03-04_17_41_11

ばっちり値が取れています。後は、DBと連携すればTwitterアカウントを使った会員システムができます。こんなに簡単に作れるとは素晴らしいです。

参考文献

【PHP】TwitterOAuthでログイン機能を実装する

スポンサーリンク
スポンサーリンク
スポンサーリンク

フォローする

スポンサーリンク
スポンサーリンク