プロ生ちゃんとお勉強するよ~

プロ生ちゃんと一緒にプログラミングをお勉強できるサイトです。

ユーザー認証を行ってAccess Token, Access Token Secretを取得する

codebird.phpを使って、 ユーザー認証を行ってAccess Token, Access Token Secretを取得する方法について勉強するね。

Access Token, Access Token Secretを取得するには、ユーザーに対してTwitterアプリからのアクセスを承認してもらう必要があります。 ユーザーに承認してもらうには、以下のような認証画面を表示します。

Twitterで、この画面を何回か見たことがあるよね!!。

認証画面を表示するまでの手順だよ!!

  1. 認証用のOAuthTokenを取得する
  2. セッション変数にOAuthTokenを保存する
  3. OAuthTokenを使用して認証URLを取得する
  4. 認証URLに遷移する

では、cordbird.phpで認証画面を表示するコードだよ。

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

// include
require_once ('codebird.php');

// Consumer Keyの設定
\Codebird\Codebird::setConsumer Key( 'Consumer Keyを設定', 'Consumer Secretを設定' );

// インスタンス取得
$cb = \Codebird\Codebird::getInstance();

// OAuthTokenを取得します。
$reply = $cb->oauth_requestToken(
    array(
      'oauth_callback' => 'コールバックURLを設定'
    )
);

/*
    後でコールバックURLにて参照するので、OAuthTokenを
    セッションに保存しておきます。
*/
$_SESSION['oauth_token'] = $reply->oauth_token;
$_SESSION['oauth_token_secret'] = $reply->oauth_token_secret;

// アクセストークンを設定
$cb->setToken( $reply->oauth_token, $reply->oauth_token_secret );

// 認証URLの取得
$auth_url = $cb->oauth_authorize();

// 認証URLへ遷移する
header( 'Location: '.$auth_url );
  • Consumer Key, Consumer Secret
    アプリの登録した際に取得した値を設定します。
    (取得方法はこちら)
  • コールバックURL
    認証画面でユーザーがアプリに対しての連携を認証、もしくはキャンセルした際に戻ってくる画面のURLを指定します。
  • アクセストークン
    コールバックURLでの処理で利用しますのでセッション変数に保存しておいてください。
  • 認証URL
    認証させる為のURLです。Twitterアプリ側で用意されているので遷移させるだけです。

アクセストークン(oauth_token, oauth_token_secret)はコールバック画面で利用します。 セッション変数や、ファイル、DBなどに保存しておいて、コールバック画面側から取得できるようにしておいてください。

先ほどのコードを実行すると、認証画面が表示されます。

「連携アプリを認証」もしくは、「キャンセル」を押下すると、 OAuthTokenを取得する際に指定した、コールバックURLに遷移します。

それでは、コールバックURLでAccess Tokenを取得するまでの手順だよ。

  1. パラメータのチェック
  2. Consumer Key, Consumer Secretの設定
  3. Request Tokenの設定
  4. Access Tokenを取得する

コールバックURLへはoauth_tokenoauth_verifierの2つのパラメータがURLのクエリで渡されてきます。

コールバックURLの処理だよ!!。

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

// include
require_once ('codebird.php');

// 認証失敗判定用変数
$auth_fail = FALSE;

// コールバックURLのパラメータチェック
if ( !isset( $_GET['oauth_token'] ) || !isset( $_GET['oauth_verifier'] ) ) {
    $auth_fail = TRUE;
}

// セッション内容のチェック
else if ( !isset( $_SESSION['oauth_token'] ) || !isset( $_SESSION['oauth_token_secret'] ) ) {
    $auth_fail = TRUE;
}

// OAuthTokenが一致するか確認
else if ( $_SESSION['oauth_token'] !== $_GET[ 'oauth_token' ] ) {
    $auth_fail = TRUE;
}

/*
    認証成功判定
*/
if ( FALSE != $auth_fail ) {
    echo "認証できませんでした。<br/>";
    unset( $_SESSION );
    exit();
}


// Consumer Keyの設定
\Codebird\Codebird::setConsumer Key( 'Consumer Keyを設定', 'Consumer Secretを設定' );

// インスタンス取得
$cb = \Codebird\Codebird::getInstance();

// RequestTokenの設定( 認証時に利用したTokenを使います )
$cb->setToken( $_SESSION[ 'oauth_token' ], $_SESSION[ 'oauth_token_secret' ] );

// AccessTokenの取得
$reply = $cb->oauth_accessToken(
    array(
        'oauth_verifier' => $_GET[ 'oauth_verifier' ]
    )
);

// 取得できたかを確認する
if ( !isset( $reply->oauth_token ) || !isset( $reply->oauth_token_secret ) ) {
    echo "AccessTokenが取得できませんでした。<br/>";
    unset( $_SESSION );
    exit();
}
else {

    /*
        AccessTokenの取得に成功しました。
            この値でユーザーの情報にアクセスができる
            ようになります。セッションやDBなどに大切
            に保存します。
    */
    $_SESSION[ 'oauth_token' ] = $reply->oauth_token;
    $_SESSION[ 'oauth_token_secret' ] = $reply->oauth_token_secret;
}
  • oauth_token, oauth_verifier
    コールバックURLのクエリ文字列として設定されてきます。
  • Consumer Key, Consumer Secret
    アプリの登録した際に取得した値を設定します。
    (取得方法はこちら)
  • Access Token, Access Token Secret
    oauth_accessToken関数の戻り値で返ってくるoauth_tokenが、Access Token、oauth_token_secretが、 Access Token Secretになります。この情報は、認可されたユーザーの情報にアクセスする為に必要となります。 この値を保存しておけば、いつでもユーザーの情報にアクセスすることができます。

Access Token, Access Token Secretはユーザーの情報にアクセスできる大事な情報です。他人に知られないように慎重に扱ってくださいね。

Access TokenAccess Token Secretの取得方法について理解できましたか?

ちょっと難しかった!?

大事なので、もう一度読み返して理解してね!!。

Access TokenAccess Token Secretが取得できれば、色々なTwitterのAPIにアクセスすることができます。 あとは、アイデア次第でいろいろなアプリを作成していけるよ!!。

本キャラクターに関する著作権およびその他一切の権利は、プログラミング生放送および、それらの関連企業・関係者に帰属しています。これは、著作権およびその他一切の権利を放棄・譲渡するものではありません。





プロ生ちゃんとお勉強するよ~

プロ生ちゃんと一緒にプログラミングをお勉強できるサイトです。