PHPでのTwitter OAuth処理

TwitterのOAuthで認証する方法をメモ程度に。あ、PHPです。

1. Twitterにアプリの登録する

まずTwitter developersのページでアプリケーションの登録をします。
Twitterにサインインした状態でアクセスしてください。
以下の項目を設定します。
  • アプリケーション名
  • アプリケーションの説明
  • アプリケーションのウェブサイトURL
  • アプリケーションの種類(ブラウザアプリケーション)
  • コールバックURL


アプリケーションの種類を「クライアントアプリケーション」に指定するとコールバックURLを指定しても無視されてしまう(認証後に呼び出されない)ので気をつけて。

登録すると「Consumer key」や「Consumer secret」の値が表示されます。これをメモっときます。

2. Twitter OAuth用のライブラリをダウンロード

下記からTwitterのOAuth用のソースをダウンロードします。
abraham / twitteroauth 「twitteroauth」フォルダ内の「OAuth.php」と「twitteroauth.php」を利用します。ので、サーバにアップロードときます。

3. サインインを呼び出すサンプル

require_once("twitteroauth/twitteroauth.php");

// セッションにアクセストークンがなかったらloginページに飛ぶ
if($_SESSION['oauth_token']==NULL || $_SESSION['oauth_token_secret']==NULL){

    $consumer_key = "1.で取得したconsumer_key";
    $consumer_secret = "1.で取得したconsumer_secret";

    $twitter_oauth = new TwitterOAuth($consumer_key,$consumer_secret);

    // callbackURLを指定してRequest tokenを取得
    $request_token = $twitter_autho->getRequestToken("http://my_domain/callback.php");

    // セッションに保存
    $_SESSION['request_token']=$token=$request_token['oauth_token'];
    $_SESSION['request_token_secret'] = $request_token['oauth_token_secret'];

    // サインインするためのURLを取得
    $url = $twitter_oauth->getAuthorizeURL($token);
    echo "サインイン";
}else{

    //サインインしていればコンテンツを表示
    include("content.php");

}

4. コールバックのサンプル

session_start();

require_once("twitteroauth/twitteroauth.php");

$consumer_key = "1. で取得したconsumer_key";
$consumer_secret = "1. で取得したconsumer_secret";

// パラメータからoauth_verifierを取得
$verifier = $_GET['oauth_verifier'];

// OAuthオブジェクト生成
$twitter_oauth = new TwitterOAuth($consumer_key,$consumer_secret,$_SESSION['request_token'],$_SESSION['request_token_secret']);

// oauth_verifierを使ってAccess tokenを取得
$access_token = $to->getAccessToken($verifier);

// token keyとtoken secret, user_id, screen_nameをセッションに保存
$_SESSION['oauth_token'] = $access_token['oauth_token'];
$_SESSION['oauth_token_secret'] = $access_token['oauth_token_secret'];

//TwitterのID
$_SESSION['user_id'] = $access_token['user_id'];

//スクリーンネーム
$_SESSION['screen_name'] = $access_token['screen_name'];

// 以降は、最初の承認であればユーザー登録の処理をしたり、サインイン後のコンテンツを表示したり・・

と、だいたいこんな感じでTwitterのOAuthは完了です。

以下のサイトを参考にさせてもらいました。
ありがとうございました。