Twitter API1.1でwebサービスを作ろう!入門チュートリアル

By@mtoksuyOn
Twitter API1.1でwebサービスを作ろう!入門チュートリアル

Twitterアプリ作りたいなって思い「Twitter API1.1」とシンプルに検索した所、開発系の記事ではなくて言及だけしている記事が多くてビックリしました。開発するにあたっての情報が少ないので、この記事がその役目を負えたら良いなという思いで記事を書かせて頂きます。

PHPを使いOAuthを通すTwitter API1.1の使い方を説明していきます

まず初めに断わっておく事があります。初心者向けに書いていきますので

Twitter API1.1を使って取得したデータを表示する事」を目的として書かせて頂きます。

Twitterアプリ登録をしよう

一番初めにアプリ登録をしましょう。

Twitter Developers

ツイッターデペロッパー(トップページ)

Create an application | Twitter Developers

ここでアプリの登録を。

登録が完了したら保存しとくもの

登録が終わりましたら My applications に行き

Consumer key

Consumer secret

Access token

Access token secret

この四つをエディタなどに保存しといて下さい。

OAuth用ライブラリ「twitteroauth」の最新版をダウンロード

今回はOAuth用ライブラリ「twitteroauth」を使用してコード説明をしていきますのでダウンロード手順を説明させて頂きます。

twitteroauth · GitHub

ここでダウンロード出来ます。

GitHubでのダウンロード手順はもう載せなくても

みんな理解していると思いますので少々省かさせて頂きます。

「Download ZIP」をクリックしてダウンロード致しましたらZIPを解凍して下さい。

解凍が終わりましたら、その中の「twitteroauth」というフォルダ一式使いますので大事にしまっておきましょう。

OAuth用ライブラリ「twitteroauth」を作成した

Abraham Williams氏に敬意を

勝手に使わせて頂きます。

REST APIを学ぼう

APIを使う準備が終わった所でさささーっとだけでいいんでREST APIに目を通していて下さい。

REST API v1.1 Resources | Twitter Developers(本家)

英語がわかる方はこちらを。

【保存版】TwitterAPI1.1 REST API 全項目解説

APIリソースの説明が1ページでわかる良記事です。

Timelineを表示してみる

では早速タイムラインを表示してみましょう。

PHP
<?php
// OAuth用ライブラリ「twitteroauth」
require_once 'twitteroauth/twitteroauth.php';
// アプリ登録した際に発行された値を入れて下さい。
$consumer_key = '*********************';
$consumer_secret = '******************************************';
$access_token = '**************************************************';
$access_token_secret = '******************************************';
// オブジェクト生成
$tw_obj = new TwitterOAuth (
	$consumer_key,
	$consumer_secret,
	$access_token,
	$access_token_secret);
// REST_API指定(今回はタイムラインのREST_API)
$tw_rest_api = 'https://api.twitter.com/1.1/statuses/home_timeline.json';
// メソッド指定
$request_method = 'GET';
// オプション指定
$options = array (
	'count'=> 20);
// ユーザータイムライン取得
$tw_obj_request = $tw_obj->OAuthRequest (
	$tw_rest_api,
	$request_method,
	$options);
// json形式で取得
$tw_obj_request_json = json_decode($tw_obj_request, true);
// 変数生成
$time_line_texts = '';
// 取得したデータを回して入れていく
foreach ($tw_obj_request_json as $key => $value) {
	$time_line_texts .= '<p>'.$value["text"].'</p>';
}
// 表示
print($time_line_texts);
?>

本番ではアクセストークンをベタ書きしてAPIを動かす事はあり得ないのですが練習という事で使わせて頂きました。取り敢えずコレで表示は出来るようになりました。

Searchを表示してみる

次はサーチを表示してみましょう。ですが、やる事はほぼ一緒ですのでTimeLineを表示出来た方はすぐに出来ると思います。

PHP
<?php
// OAuth用ライブラリ「twitteroauth」
require_once 'twitteroauth/twitteroauth.php';
// アプリ登録した際に発行された値を入れて下さい。
$consumer_key = '*********************';
$consumer_secret = '******************************************';
$access_token = '**************************************************';
$access_token_secret = '******************************************';
// オブジェクト生成
$tw_obj = new TwitterOAuth (
	$consumer_key,
	$consumer_secret,
	$access_token,
	$access_token_secret);
// REST_API指定(今回はサーチのREST_API)
$tw_rest_api = 'https://api.twitter.com/1.1/search/tweets.json';
// メソッド指定
$request_method = 'GET';
// オプションで使用する変数
$option_q = '東京';
$option_count = 20;
// オプション指定
$options = array (
	'q' => $option_q, 
	'count' => $option_count);
// ユーザータイムライン取得
$tw_obj_request = $tw_obj->OAuthRequest (
	$tw_rest_api,
	$request_method,
	$options);
// json形式で取得
$tw_obj_request_json = json_decode($tw_obj_request, true);
// 変数生成
$search_texts = '';
// 取得したデータを回す
foreach ($tw_obj_request_json["statuses"] as $key => $value) {
	// 検索結果をを入れていく
	$search_texts .= '<p>'.$value["text"].'</p>';
}
print($search_texts);
?>

もうタイムラインとほぼ一緒なんです。大体のAPIはこの形で取得出来ますので一度取得出来るようになれば色んなAPIを呼び出す事が出来るようになります。

ログイン機能を付けてみよう

本番はここからですね。

コールバック設定をする

コールバック設定とはログインした際に飛ばすページの事です。そんなのいらないって方は設定しなくていいとは思いますがwebサービスを運営するなら必須と考えていて下さい。

https://dev.twitter.com/apps

ここからアプリ名をクリックして設定タブをクリックしますと設定を変えれますのでコールバック先を明記して下さい。

例 http://pickle.be/callback/

設定を終えましたら次はログインページを作りましょう。

login.php

PHP

想定ファイル名: index.php or login.php

<?php
// セッションスタート
session_start();
// OAuth用ライブラリ「twitteroauth」
require_once 'twitteroauth/twitteroauth.php';
// アプリ登録した際に発行された値を入れて下さい。
$consumer_key = '*********************';
$consumer_secret = '******************************************';
// call_backする場所
$call_back_url = 'アプリ設定で設定したURL';
//--------------------------------------
//セッションのアクセストークンのチェック
//--------------------------------------
if((isset($_SESSION["oauth_token"]) && $_SESSION["oauth_token"] !== NULL) && (isset($_SESSION["oauth_token_secret"]) && $_SESSION["oauth_token_secret"] !== NULL)) {
	// ログインしたらここにくる
}
	// ログアウトの状態
	else {
		// オブジェクト生成
		$twitter_oauth_object = new TwitterOAuth (
			$consumer_key,
			$consumer_secret);
		//call_backを指定して request tokenを取得
		$oOauthToken = $twitter_oauth_object->getRequestToken($call_back_url);
		//セッション格納
		$_SESSION['request_token'] = $oOauthToken['oauth_token'];
		$sToken = $oOauthToken['oauth_token'];
		$_SESSION['request_token_secret'] = $oOauthToken['oauth_token_secret'];
		//認証URLの引数 falseの場合はtwitter側で認証確認表示
		if(isset($_GET['authorizeBoolean']) && $_GET['authorizeBoolean'] != '') {
			$bAuthorizeBoolean = false;
		}
			else {
				$bAuthorizeBoolean = true;
			}
		//Authorize url を取得
		$sUrl = $twitter_oauth_object->getAuthorizeURL($sToken, $bAuthorizeBoolean);
	}
?>
	Twitterアカウントを使いログインする

こんな感じのコードでログイン機能は完成するのですが、コールバックしたファイルの中でセッションデータを取得しなければなりません。次はコールバックされたファイルのコードを書いていきましょう。

callback.php

PHP

想定ファイル名: index.php or callback.php

<?php
//SESSIONスタート
session_start();
// OAuth用ライブラリ「twitteroauth」
require_once 'twitteroauth/twitteroauth.php';
// アプリ登録した際に発行された値を入れて下さい。
$consumer_key = '*********************';
$consumer_secret = '******************************************';
//-------------------------------------
//URLパラメータからoauth_verifierを取得
//-------------------------------------
if(isset($_GET['oauth_verifier']) && $_GET['oauth_verifier'] != '') {
	$sVerifier = $_GET['oauth_verifier'];
}
	else {
		echo 'oauth_verifier error!';
		exit;
	}
//-----------------------------------------
//リクエストトークンでOAuthオブジェクト生成
//-----------------------------------------
$oOauth = new TwitterOAuth($consumer_key, $consumer_secret, $_SESSION['request_token'], $_SESSION['request_token_secret']);
//oauth_verifierを使ってAccess tokenを取得
$oAccessToken = $oOauth->getAccessToken($sVerifier);
//-------------------------
//取得した値をSESSIONに格納
//-------------------------
$_SESSION['user_id'] = $oAccessToken['user_id'];
$_SESSION['screen_name'] = $oAccessToken['screen_name'];
$_SESSION['oauth_token'] = $oAccessToken['oauth_token'];
$_SESSION['oauth_token_secret'] = $oAccessToken['oauth_token_secret'];
// loginページへリダイレクト
header("Location: トップディレクトリ名とか");
?>

これでユーザーのセッションデータを取得できるようになったので、これを元にwebサービスを作る事になるのですが、今回は入門という事でここまでにさせて頂きます。最後にログアウト機能も付けたいと思いますのでログアウトするコードも載せていきます。

logout.php

PHP

想定ファイル名: index.php or logout.php

<?php
// セッションスタート
session_start();
$_SESSION = array();
session_destroy();
header("Location: トップディレクトリ名とか");
?>

これで一通りの動きは出来るようになったかと思います。

まとめ

いかがだったでしょうか?

動かない、わからないという方はTwitterで気軽にリプライを飛ばして下さい。あと僕が勉強した記事はPickleというURLがあるツイートだけ見れるTwitterクライアントアプリを12日間で作ってみた。の中にリストとして置いてありますので、そちらもご覧になって下さい。

今回書いた理由は忘備録も含んでいるのですが冒頭に書いたように検索をしても目的の記事が出て来なくて本当にアプリを作るのに時間がかかってしまいました。これから作る人のためにこのようなコード集があればさくっと作れるんじゃないかなっていう思いで記事を書きました。

という事で以上、Twitter API1.1でwebサービスを作ろう!入門チュートリアルでしたー。

webサービス