「PECL::OAuth」を使って、PHPで「Twitter API」を操作する。

PECL::OAuthを使うと、PHPで、手軽にtwitter APIを取り扱うことができるようになります。

ということで、PECL::OAuthを使ったTwitterAPIの使い方をまとめておきます。

PECL::OAuthのインストールについてはこちら

Twitterアプリケーションの登録

まずは、TwitterAPIを使用するにあたって、アプリケーションの登録を行う必要があります。

  1. ログインして、Twitter / アプリケーションにアクセスします。
  2. 新しいアプリケーションを追加 »をクリックして、アプリケーションの登録を行います。
    • アプリケーションのアイコン : アプリケーションのアイコン画像。
    • アプリケーション名 : アプリケーションの名前。
      ※twitterで表示されるfrom○○のアプリケーション名になります。
    • アプリケーションの説明 : アプリケーションの説明。
    • アプリケーションのウェブサイトURL : アプリケーションののURL。
    • 所属会社/団体 : アプリケーションの管理者。
    • サイト : アプリケーションの管理者のURL。
    • アプリケーションの種類 : アプリケーションの種類を選択。(今回は、ブラウザアプリケーション)
    • コールバックURL : アクセス権承認のあとのリダイレクトURL。
    • Default Access type : アクセス権の種類を選択。
    • Twitterでログインする : Twitter認証を使用するかの確認。
  3. アプリケーションを登録したら、Application Detailsのページで、登録アプリケーションの「Consumer key」、「Consumer secret」、「フォローをリクエストしました。」「Access token URL」、「Authorize URL」の項目を確認します。

AccessTokenの取得

TwitterAPIをを操作するために、以下のような感じでアクセストークンを取得します。

$consumer_key    = {consumer_key};
$consumer_secret = {consumer_secret};

$oauth = new OAuth($consumer_key,$consumer_secret,OAUTH_SIG_METHOD_HMACSHA1,OAUTH_AUTH_TYPE_URI);

    if($_GET['oauth_token'] && $_GET['oauth_verifier'])
    {
        $oauth->setToken($_SESSION['oauth_token'],$_SESSION['oauth_token_secret']);
        $access_token_info = $oauth->getAccessToken('https://twitter.com/oauth/access_token');

            $_SESSION['screen_name']         = $access_token_info['screen_name'];
            $_SESSION['access_token']        = $access_token_info['oauth_token'];
            $_SESSION['access_token_secret'] = $access_token_info['oauth_token_secret'];

            //表示
            print_r($_SESSION);

    }else{

        $callback_url       = {this_page_url};
        $request_token_info = $oauth->getRequestToken('https://twitter.com/oauth/request_token',$callback_url);

            $_SESSION['request_token']        = $request_token_info['oauth_token'];
            $_SESSION['request_token_secret'] = $request_token_info['oauth_token_secret'];

        $auth_result_url = "https://twitter.com/oauth/authorize?oauth_token=" .$_SESSION['request_token'];
        header("Location: $auth_result_url");exit;
    }

参考情報

Callback URL は適当に設定。
今のOAuthのバージョン (1.0a) では要求時にコールバックURLを指定するので、この設定値は使われないみたい。ここで結構はまった。

Sinatra と OAuth を使って Twitter のタイムラインを取得してみた – まちゅダイアリー

1.0a をサポートするサービスプロバイダでは、リクエストトークンとアクセストークンを交換する際に verifier_token を渡す必要があります。 verifier_token が $_GET あるいは $_POST に存在する場合は自動的にそれが渡され、 呼び出し側が verifier_token を指定する必要はありません

PHP: OAuth::getAccessToken – Manual

Twitterでは、AccessTokenの有効期限が無制限に設定されています。

How long does an access token last?
We do not currently expire access tokens. You access token will be invalid if a user explicitly rejects your application from their settings or if a Twitter admin suspends your application. If your application is suspended there will be a note on your application page saying that it has been suspended.

Twitter API Wiki / OAuth FAQ

TwitterAPIの使い方

AccessTokenを取得したら、TwitterAPIのいろいろを使えるようになります。このへんは、ドキュメントを確認しながら作業していくことになるかと思います。

実際に試してみます。こんな感じです。

プロフィールを取得する

$oauth = new OAuth($consumer_key,$consumer_secret,OAUTH_SIG_METHOD_HMACSHA1,OAUTH_AUTH_TYPE_URI);
$oauth->setToken($_SESSION['access_token'],$_SESSION['access_token_secret']);
$oauth->fetch("http://api.twitter.com/1/account/verify_credentials.xml");
$profile_obj = simplexml_load_string($oauth->getLastResponse());

自作アプリケーションからツイートする

$tweet = "ツイートのテストです。";
$oauth = new OAuth($consumer_key,$consumer_secret,OAUTH_SIG_METHOD_HMACSHA1,OAUTH_AUTH_TYPE_URI);
$oauth->setToken($_SESSION['access_token'],$_SESSION['access_token_secret']);
$oauth->fetch("https://twitter.com/statuses/update.xml",array('status' => $tweet),OAUTH_HTTP_METHOD_POST);

ひとこと

Twitterのサービスがインフラ化してきて、そのTwitterAPIは、ほぼ全機能入りという感じなので、これを使ったサービスについて、可能性が広がる感じがします。
せっかくなので、なんかサービスつくりあげてみなきゃ。と。

参考サイト

カテゴリー: WEB技術のこと   タグ: , , , ,   この投稿のパーマリンク

トラックバック

「PECL::OAuth」を使って、PHPで「Twitter API」を操作する。 への1件のコメント

  1. ピンバック: □PHPでTwitter | Linux Install Memo

コメントをどうぞ

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

*

次のHTML タグと属性が使えます: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>