【Twitter API】PHPで特定ユーザのツイートの収集方法

PHP

Twitter APIをPHPで操作して、任意のユーザのツイート(タイムライン)を収集する方法について解説していきます。
この記事ではTwitter APIの登録が終わっていて、APIキーが取得できていることを前提に書いていますので、ご了承ください。

スポンサーリンク

OAuthに接続するためのライブラリをダウンロード

OAuthへの接続は1からやると大変なので、ライブラリを使わせていただきます。
以下のライブラリをダウンロードしましょう。

themattharris/tmhOAuth
An OAuth 1.0A library written in PHP. Contribute to themattharris/tmhOAuth development by creating an account on GitHub.

ちなみに動作環境は次のようになります。

  • PHP Version 5.3以上
  • cURL support enabledである

これらの動作環境は phpinfo();関数で確認することができます。

OAuthライブラリの設置

先ほどダウンロードしたフォルダの中に tmhOAuth.php というファイルがあります。
これを任意の位置に配置しましょう。
次にuserTimeline.php というファイルを作成して、これをtmhOAuth.phpと同じ階層に配置します。
例は以下のようになります。

https://△△.com/code/twitter/tmhOAuth.php
https://△△.com/code/twitter/userTimeline.php

OAuthへ接続する方法

以下のようなコードを書きます。

<<!DOCTYPE HTML>
<html lang="ja">
<head>
<meta charset="utf-8">
<title>Twitter get user timeline</title>
</head>
<body>

<h1>Twitter get user timeline</h1>

<?php
require_once("./tmhOAuth.php"); 

$sConsumerKey = "***********************"; 
$sConsumerSecret = "**********************************************"; 
$sAccessToken = "**********************************************"; 
$sAccessTokenSecret = "**********************************************"; 

$twObj = new tmhOauth(
						array(
						"consumer_key" =>		$sConsumerKey,
						"consumer_secret" =>	$sConsumerSecret,
						"token" =>				$sAccessToken,
						"secret" =>			$sAccessTokenSecret,
						"curl_ssl_verifypeer" => false,
						)
					);

$code = $twObj->request( 'GET', "https://api.twitter.com/1.1/statuses/user_timeline.json",array("count"=>"10","screen_name"=>"対象ユーザーのスクリーンネーム"));

$aResData = json_decode($twObj->response["response"], true);

if(isset($aResData['errors']) &amp;&amp; $aResData['errors'] != ''){
	?>
	取得に失敗しました。エラー内容は以下になります<br/>
	<pre>
	<?php var_dump($aResData); ?>
	</pre>
<?php
}else{
	$iCount = sizeof($aResData);
	for($iTweet = 0; $iTweet<$iCount; $iTweet++){
		$sText=                     $aResData[$iTweet]['text'];
		$sName=                     $aResData[$iTweet]['user']['name'];
		$sScreenName=               $aResData[$iTweet]['user']['screen_name'];
		$sProfileImageUrl =         $aResData[$iTweet]['user']['profile_image_url'];
		$sCreatedAt =               $aResData[$iTweet]['created_at'];
		$sStrtotime=                strtotime($sCreatedAt);
		$sCreatedAt =               date('Y-m-d H:i:s', $sStrtotime);
		?>
		<hr/>
		<h3><?php echo $sName; ?>さんのツイート</h3>
		<ul>
		<li>スクリーンネーム: <?php echo $sScreenName; ?></li>
		<li>プロフィール画像: <img src="<?php echo $sProfileImageUrl; ?>" /></li>
		<li>つぶやき: <?php echo $sText; ?></li>
		<li>ツイート時間: <?php echo $sCreatedAt; ?></li>
		</ul>
<?php
	}
}
?>

</body>
</html>

区切って要点を解説していきます。

APIキーの挿入

$sConsumerKey = "***********************"; 
$sConsumerSecret = "**********************************************"; 
$sAccessToken = "**********************************************"; 
$sAccessTokenSecret = "**********************************************"; 

上記の******にAPIキーを挿入します。
上から順に

  • Consumer key
  • Consumer secret
  • Access Token 
  • Access Token Secret

の値を挿入しましょう。

OAuthオブジェクトの生成

$twObj = new tmhOauth(
						array(
						"consumer_key" =>		$sConsumerKey,
						"consumer_secret" =>	$sConsumerSecret,
						"token" =>				$sAccessToken,
						"secret" =>			$sAccessTokenSecret,
						"curl_ssl_verifypeer" => false,
						)
					);

上記のプログラムでOAuthオブジェクトを生成しています。

ユーザータイムラインの取得

$code = $twObj->request( 'GET', "https://api.twitter.com/1.1/statuses/user_timeline.json",array("count"=>"10","screen_name"=>"対象ユーザーのスクリーンネーム"));

一番大切なコードになります。
ユーザータイムラインを取得するためのメソッドになります。

GET statuses/user_timeline – ユーザータイムラインを取得するの解説が非常に分かりやすいので、参考にしてみてください。

ユーザータイムラインの出力

for($iTweet = 0; $iTweet<$iCount; $iTweet++){
		$sText=                     $aResData[$iTweet]['text'];
		$sName=                     $aResData[$iTweet]['user']['name'];
		$sScreenName=               $aResData[$iTweet]['user']['screen_name'];
		$sProfileImageUrl =         $aResData[$iTweet]['user']['profile_image_url'];
		$sCreatedAt =               $aResData[$iTweet]['created_at'];
		$sStrtotime=                strtotime($sCreatedAt);
		$sCreatedAt =               date('Y-m-d H:i:s', $sStrtotime);
		?>
		<hr/>
		<h3><?php echo $sName; ?>さんのつぶやき</h3>
		<ul>
		<li>スクリーンネーム: <?php echo $sScreenName; ?></li>
		<li>プロフィール画像: <img src="<?php echo $sProfileImageUrl; ?>" /></li>
		<li>つぶやき: <?php echo $sText; ?></li>
		<li>ツイート時間: <?php echo $sCreatedAt; ?></li>
		</ul>

必要なユーザオブジェクトを取得し、そのあと出力しています。
ユーザオブジェクトの説明と取得できるものはUser Object(ユーザーオブジェクト)の説明に分かりやすくまとめられています。

今回は以上になります。
最後まで見てくださってありがとうございました。

タイトルとURLをコピーしました