ライブラリ

TwitterOAuth

OAuth librariesのひとつである「TwitterOAuth」について、サンプルコードからその使用方法を解説します。

abraham/twitteroauth · GitHub

index.php

<?php

session_start();

require_once( 'twitteroauth/twitteroauth.php' );
require_once( 'config.php' );


// アクセス トークンが有効ではないならば、接続ページへのリンクを表示する
if( empty( $_SESSION[ 'access_token' ] )
 || empty( $_SESSION[ 'access_token' ][ 'oauth_token' ] )
 || empty( $_SESSION[ 'access_token' ][ 'oauth_token_secret' ] ) )
{
    session_destroy();
    echo '<a href="redirect.php">Sign in with Twitter</a>';
}
else
{
    // セッション変数からアクセス トークンを取得する
    $access_token = $_SESSION[ 'access_token' ];


    // TwitterOAuthオブジェクトを クライアント証明とアクセス トークンから生成する
    $connection = new TwitterOAuth(
        CONSUMER_KEY,
        CONSUMER_SECRET,
        $access_token[ 'oauth_token' ],
        $access_token[ 'oauth_token_secret' ]
        );


    // 認可されたユーザーのタイムラインを取得する
    $status = $connection->get( 'statuses/user_timeline', null );

    // レスポンスを表示する
    var_dump( $status );
}

config.php (アプリケーション設定)

<?php

define('CONSUMER_KEY', 'CONSUMER_KEY_HERE');
define('CONSUMER_SECRET', 'CONSUMER_SECRET_HERE');
define('OAUTH_CALLBACK', 'http://example.com/twitteroauth/callback.php');

redirect.php (サインイン ページへのリダイレクト)

<?php

session_start();

require_once( 'twitteroauth/twitteroauth.php' );
require_once( 'config.php' );


// TwitterOAuthオブジェクトを クライアント証明から生成する
$connection = new TwitterOAuth( CONSUMER_KEY, CONSUMER_SECRET );

// リクエスト トークンを取得する
$request_token = $connection->getRequestToken( OAUTH_CALLBACK );

// リクエスト トークンをセッションに保存する
$_SESSION[ 'oauth_token' ] = $request_token[ 'oauth_token' ];
$_SESSION[ 'oauth_token_secret' ] = $request_token[ 'oauth_token_secret' ];


switch( $connection->http_code )
{
    case 200:
        // Twitterの認可ページへリダイレクトする
        $url = $connection->getAuthorizeURL( $request_token[ 'oauth_token' ] );
        header( 'Location: '.$url );
        break;

    default:
        echo 'Could not connect to Twitter. Refresh the page or try again later.';
}

callback.php (サインイン ページからのコールバック)

<?php

session_start();

require_once( 'twitteroauth/twitteroauth.php' );
require_once( 'config.php' );


if( ! isset( $_REQUEST[ 'oauth_token' ] ) || $_REQUEST[ 'oauth_token' ] === $_SESSION[ 'oauth_token' ] )
{
    // TwitterOAuthオブジェクトを クライアント証明とアクセス トークンから生成する
    $connection = new TwitterOAuth(
        CONSUMER_KEY,
        CONSUMER_SECRET,
        $_SESSION[ 'oauth_token' ],
        $_SESSION[ 'oauth_token_secret' ]
        );

    // アクセス トークンを取得する
    $access_token = $connection->getAccessToken( $_REQUEST[ 'oauth_verifier' ] );

    // アクセス トークンをセッションに保存する
    $_SESSION[ 'access_token' ] = $access_token;

    // 不要となったリクエスト トークンを削除する
    unset( $_SESSION[ 'oauth_token' ] );
    unset( $_SESSION[ 'oauth_token_secret' ] );


    if( 200 == $connection->http_code )
    {
        // 起点となるページへリダイレクトする
        header( 'Location: ./' );
        return;
    }
}

session_destroy();
echo '<a href="redirect.php">Sign in with Twitter</a>';

tmhOAuth

ファイルのアップロードをサポートしています。

themattharris/tmhOAuth · GitHub

利用にあたっては、themattharris/tmhOAuth-examples · GitHubのサンプルコードが参考になります。