Help us understand the problem. What is going on with this article?

Twitter APIでつぶやきを取得する

More than 3 years have passed since last update.

twitter API について検索しているとJSでの取得方法もちらほら見られるけれど、twitter API ver.1.1から認証が必須となったことで、JSだとアクセストークンがまる見えになってしまう。これは危険。
ということで、PHPでの実装手順。

アプリケーションの登録

twitter API を使ってつぶやきを取得したり投稿したりするために、はじめに絶対必要。
詳しくは以下のサイトを参考に。
「twitter アプリケーション登録」で参考サイトがいっぱい出てくる。
Twitter APIで、アプリケーションを登録する方法

↓ 完了するとこれが取得できる
consumer_key
consumer_secret

アクセストークンの取得

詳しくは以下のサイトを参考に。
Twitter APIでアクセストークンを取得する方法

↓ 完了するとこれが取得できる
access_token
access_token_secret

OAuth用ライブラリ「twistoauth」

Oauth認証用ライブラリの中では一番メジャーっぽい「twitteroauth」を使おうとしたらOauth認証通すまでにちょっとハマってしまい...
twitteroauthを元に改良した人がいたので、そちらのライブラリ「twistoauth」を使ってみた。
「twitteroauth」の使い方も備忘録としてこちらに記載

まずはライブラリをダウンロード。
twistoauth GitHub

ダウンロードしたファイルの中で使うのは TwistOAuth.phar のみ。

twistoauth を使って認証する

まずはtwistoauth の読み込み

php
require 'TwistOAuth.phar';

上の手順で取得したAPIキー、アクセストークンを設定して認証を通す。

php
$consumer_key = 'xxxxxxxxxxx';
$consumer_secret = 'xxxxxxxxxxx';
$access_token = 'xxxxxxxxxxx';
$access_token_secret = 'xxxxxxxxxxx';

$connection = new TwistOAuth($consumer_key, $consumer_secret, $access_token, $access_token_secret);

jsonの取得

REST APIsを参照すれば、いろんなツイートを取得できる。パラメータもいろいろ。

php
// キーワードによるツイート検索
$tweets_params = ['q' => '夜景,きれい OR キレイ OR 綺麗' ,'count' => '10'];
$tweets = $connection->get('search/tweets', $tweets_params)->statuses;

// ハッシュタグによるツイート検索
$hash_params = ['q' => '#html5,#css3' ,'count' => '10', 'lang'=>'ja'];
$hash = $connection->get('search/tweets', $hash_params)->statuses;

// 指定位置(geo情報)から投稿されたツイート検索
$geo_params = ['geocode' => '35.710063,139.8107,0.2km' ,'count' => '10'];
$geo = $connection->get('search/tweets', $geo_params)->statuses;

// 自分のタイムラインを取得
$home_params = ['count' => '10'];
$home = $connection->get('statuses/home_timeline', $home_params);

// 自分のツイートを取得
$user_params = ['count' => '10'];
$user = $connection->get('statuses/user_timeline', $user_params);

// ニックネームからユーザ情報を取得
$users_params = ['screen_name' => 'yokoh9'];
$users = $connection->get('users/show', $users_params);

※PHP ver.5.3以下の場合は配列の省略記述 ['xxx' => 'xxx', ...] が使えないので、array('xxx' => 'xxx', ...) とする。

JSONから表示する情報を抜き出す

キーワードやハッシュで検索したツイートでは、キーワードにマーキングをしたいのでその処理も含む。

php
foreach ($tweets as $value) {
    $text = htmlspecialchars($value->text, ENT_QUOTES, 'UTF-8', false);
    // 検索キーワードをマーキング
    $keywords = preg_split('/,|\sOR\s/', $tweets_params['q']); //配列化
    foreach ($keywords as $key) {
        $text = str_ireplace($key, '<span class="keyword">'.$key.'</span>', $text);
    }
    // ツイート表示のHTML生成
    disp_tweet($value, $text);
}

抜き出した情報をHTMLに流し込む。

php
function disp_tweet($value, $text){
    $icon_url = $value->user->profile_image_url;
    $screen_name = $value->user->screen_name;
    $updated = date('Y/m/d H:i', strtotime($value->created_at));
    $tweet_id = $value->id_str;
    $url = 'https://twitter.com/' . $screen_name . '/status/' . $tweet_id;

    echo '<div class="tweetbox">' . PHP_EOL;
    echo '<div class="thumb">' . '<img alt="" src="' . $icon_url . '">' . '</div>' . PHP_EOL;
    echo '<div class="meta"><a target="_blank" href="' . $url . '">' . $updated . '</a>' . '<br>@' . $screen_name .'</div>' . PHP_EOL;
    echo '<div class="tweet">' . $text . '</div>' . PHP_EOL;
    echo '</div>' . PHP_EOL;
}

おしまい。


以下はもう一つのライブラリ「twitteroauth」の場合

OAuth用ライブラリ「twitteroauth」の場合

まずはダウンロード。
twitteroauth · GitHub

twitteroauth ver.0.2.0 までの使い方は検索でいっぱい出てくるんだけど、現最新バージョンは ver.0.5.1。
0.2.1以降はcomposerからインストールするやり方に変わったらしい。
composerってなに? ⇒ PHPのパッケージ管理ツール
ということで、composerからインストールせねば。。
こちら「Composer に挑戦したよ深夜0時」を参考にさせていただいた。

composerに関するメモ

twitteroauthのインストール手順

  1. アプリのフォルダを作成
  2. 使いたいパッケージの定義ファイル(composer.json)を作成
  3. $ composer install のコマンド実行
  4. PHPのコーディング(autoloaderファイルの読み込み)

上記(2)の ↓ composer.jsonファイル(バージョンは最新にしてね)をアプリフォルダ内に入れる。

json
{
  "require": {
    "php": ">=5.4.0",
    "abraham/twitteroauth": "0.5.0"
  }
}
$ composer install

でインストール。

twitteroauth を使って認証する

twitteroauthは無事インストール完了。
次は認証。
本家の英語サイト
https://twitteroauth.com/
日本語サイトでは ↓ こちらがけっこう丁寧に解説してくれている。
abraham/twitteroauthを使う

php
<?php
// twitteroauth の読み込み
require_once 'vendor/autoload.php';
use Abraham\TwitterOAuth\TwitterOAuth;

// OAuth認証
$consumer_key = 'xxxxxxxx';
$consumer_secret = 'xxxxxxxx';
$access_token = 'xxxxxxxx';
$access_token_secret = 'xxxxxxxx';

$connection = new TwitterOAuth($consumer_key, $consumer_secret, $access_token, $access_token_secret);

ここまでがOAuth認証を通すところ。

ツイートを投稿したり取得したり

jsonの取得から表示までは twistoauth の場合とほぼ同じ。

php
// Timelineの取得
$home = $connection->get('statuses/home_timeline', array('count' => 5));

// キーワードによるツイート検索
$tweet = $connection->get("search/tweets", array("q" => "夜景 きれい", 'count' => 10));

// 認証が有効か+ユーザ情報取得
$user = $connection->get('account/verify_credentials');

// つぶやく
$status = $connection->post('statuses/update', ['status' =>'ツイート内容']);

// リツイート
$retweet = $connection->post('statuses/retweet/ツイートID');

// フォロワーを取得
$followers = $connection->get('followers/list');

// フォローしてる人を取得
$follows = $connection->get('friends/list');

// ユーザ名でユーザ情報を取得
$userinfo = $connection->get('users/show', ['screen_name'=> '@以降の表示名']);

// ユーザIDでフォローする
$follow = $connection->post('friendships/create', ['user_id'=> 'ユーザID']);

yokoh9
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした