PHPでTwitterAPIを使ってみる

https://developer.twitter.com/

2016年以来久しぶりにTwitterAPIを使おっかなーと思ったらなんだか審査がどうとかややこしいことになってるようなので再度使い方も含めてまとめておきましょう。
またいつ変更されてしまうかわかりませんが・・・

ディベロッパー登録

以前作ったAppがまだ存在してたので審査は回避か?と「Create an App」クリックしたらなんだかディベロッパー登録してね!的なダイアログ。。。
なんだか説明されている方々と違う画面が出たけどまたまた変更されてるようですね。
英語と格闘しながら登録したらすぐにアプリ作成画面が使用できるようになったよ。
審査は無くなったの?それとももともと登録してたから?

アプリ作成

Create an appでアプリ作成

必須項目を埋めて「Create」

・App name
・Application description
・Website URL
・Tell us how this app will be used

2016年ぐらいに作ったアプリのIDが80万台だったけど今回は1661万台!
3年の間に・・・すげぇ。

Keys and tokensでAPIのキーとトークンを作成

API key
API secret key
Access token
Access token secret

が作成されたね。

twitteroauthを使ってみるテスト

https://github.com/abraham/twitteroauth

からダウンロードしたzipファイル解凍してできたtwitteroauth-masterディレクトリを配置。

<?php
require_once("twitteroauth-master/autoload.php");
use Abraham\TwitterOAuth\TwitterOAuth;

const CONSUMER_KEY = 【API key】;
const CONSUMER_SECRET = 【API secret key】;
$access_token = 【Access token】;
$access_token_secret = 【Access token secret】;

$connection = new TwitterOAuth(CONSUMER_KEY, CONSUMER_SECRET, $access_token, $access_token_secret);

/* APIリクエストエラー処理 */
if ($connection->getLastHttpCode() == 200) {
	// 成功時の処理
} else {
	// 失敗時の処理
}

TwitterAPIを使ってみるテスト

アカウントの有効性を確認

$content = $connection->get("account/verify_credentials");

ホームタイムラインを取得

$statuses = $connection->get(
	'statuses/home_timeline',
	[
		'count' => 25,
		'exclude_replies' => true
	]
);

Tweetキーワード検索

$tweets_params = ['q' => 'キーワード' ,'count' => '10'];
$tweets = $connection->get('search/tweets', $tweets_params)->statuses;

Tweetハッシュタグ検索

$hash_params = ['q' => '#ハッシュタグ' ,'count' => '10', 'lang'=>'ja'];
$tweets = $connection->get('search/tweets', $hash_params)->statuses;

Tweetする

$tweet = 'Tweetする内容';
$result = $connection->post(
	'statuses/update',
	['status' => $tweet],
);

//※PHP_EOLで改行。

画像添付してTweetする

$image1 = $connection->upload("media/upload", ["media" => "image1.jpg"]);
$image2 = $connection->upload("media/upload", ["media" => "image2.jpg"]);
$tweet = 'Tweetする内容';
$media_ids = implode(",",
				[
					$image1->media_id_string,
					$image2->media_id_string,
				]
);
$result = $connection->post(
			"statuses/update",
			[
				"status" => $tweet,
				"media_ids" => $media_ids
			]
);

リツイートする

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

tweetIDに「いいね」する

$tweet_id = 'いいねするtweetID';
$result = $connection->post(
	'favorites/create',
	['id' => $tweet_id],
);

フォローしてるユーザID取得

$friends = $connection->get('friends/ids');

フォロワーのユーザID取得

$followers = $connection->get('followers/ids');

userIDをフォローする

$user_id = 'userID';
$result = $connection->post(
	'friendships/create',
	['user_id' => $user_id],
);

userIDのフォローを解除する

$user_id = 'userID';
$result = $connection->post(
	'friendships/destroy',
	['user_id' => $user_id],
);

これぐらいできたらいいかなー。