TwitterAPI

3分で分かるTwitterAPIの使い方

PHP TwitterAPI

こんにちは。カトーです。TwitterAPI案件が多いようなので、検索インデックスを狙って検証で書いてみますよ。タイトルで釣る。概要が分かれば簡単にできますから。去年も書いてますが、まぁ、色々新しくなってますしね。

TwitterAPIの仕組みと流れ

何も難しい事はありません、アプリケーションを登録して、それぞれのキーを取得。アクセストークンを利用してPOSTとGETの関数を叩くだけです。
もちろん例外処理などは必要ですが、ざっくり書けばこんな感じです。

TwitterAPItwitterAPI
お約束で書いておくと、ユーザー毎の情報を取得しますので、権限によって情報が漏れるとエラい目にあいますので、要注意と共にアプリケーションの登録鍵やトークンは変更してエラーになることを事前にチェックしつつ、例外処理を行いましょう。

TwitterOAuthをサーバーに入れる。

一から書いてもいいですが、手間ですのでありがたくライブラリを使わせてもらいます。

大変感謝です。英語でいうと、Special thanksです。
@see : TwitterOAuth:https://twitteroauth.com/
配置はこんな感じです。

twitteroauth ダウンロードして解凍したディレクトリー,twitteroauth-0.6.4をリネーム
login.php twitterの認証画面
https://api.twitter.com/oauth/authorize?oauth_token=xxxxxxxxへ
リダイレクトさせる記述
callback.php 認証後、発行されたトークンを取得するファイル

リダイレクトファイルの記述を行う。

login.phpを書いてみます。使いまわすので各種キーは定数で書きましたが、別に変数に格納でもかまいません。

<?php
session_start();//戻ってきた時も使うので、セッション利用開始
// アプリケーション登録した時に発行された鍵などを記述
define("Consumer_Key"   , "xxxxxxxxxx");
define("Consumer_Secret", "xxxxxxxxxx");
define('Callback', 'xxxxxxx/callback.php');
//ライブラリを読み込む
require "twitteroauth/autoload.php";
use Abraham\TwitterOAuth\TwitterOAuth;
//TwitterOAuthインスタンス生成、リクエストトークン取得
$connection = new TwitterOAuth(Consumer_Key, Consumer_Secret);
$request_token = $connection->oauth("oauth/request_token", array("oauth_callback" => Callback));
//callback.php利用する為、セッションに保存
$_SESSION['oauth_token'] = $request_token['oauth_token'];
$_SESSION['oauth_token_secret'] = $request_token['oauth_token_secret'];
// Twitter認証へリダイレクト
$url = $connection->url("oauth/authorize", array("oauth_token" => $request_token['oauth_token']));
header('Location: ' . $url);
?>

ここまで書いてアクセスすれば、認証画面は飛びます。
でも戻ってきたときのcallbackが無いので、こちらも書いておきます。

 

session_start();
define("Consumer_Key"   , "xxxxxxx");
define("Consumer_Secret", "xxxxxxxxx");
//ライブラリを読み込む
require "twitteroauth/autoload.php";
use Abraham\TwitterOAuth\TwitterOAuth;

//Twitterからアクセストークンを取得する
	$connection = new TwitterOAuth(Consumer_Key, Consumer_Secret, $_SESSION['oauth_token'], $_SESSION['oauth_token_secret']);
	$access_token = $connection->oauth('oauth/access_token', array('oauth_verifier' => $_GET['oauth_verifier'], 'oauth_token'=> $_GET['oauth_token']));
 
	//取得したアクセストークンでユーザ情報を取得
	$user_connection = new TwitterOAuth(Consumer_Key, Consumer_Secret, $access_token['oauth_token'], $access_token['oauth_token_secret']);
	$user_info = $user_connection->get('account/verify_credentials');	

//ユーザ情報を取得
	$id = $user_info->id;
	$name = $user_info->name;
	$screen_name = $user_info->screen_name;
	$profile_image_url_https = $user_info->profile_image_url_https;
	$text = $user_info->status->text;
/// こんな感じで必要な情報を変数にいれたり、
//  各値をセッションに入れたりします。
	$_SESSION['access_token'] = $access_token;
	$_SESSION['id'] = $id;
	$_SESSION['name'] = $name;
	$_SESSION['screen_name'] = $screen_name;
	$_SESSION['text'] = $text;
	
	//ここにDBに入れる処理を書いたり、さらにリダイレクトさせたり記述

実際にTwitterAPIを利用してみる。

実際にアクセスしてみると、アクセストークンが発行されますので、
このTwitterAPIを利用してみます。記述はこちらも簡単です。

//ライブラリを読み込む
require "twitteroauth/autoload.php";
use Abraham\TwitterOAuth\TwitterOAuth;

//値を設定
define("Consumer_Key",    "xxxxxxxx");
define("Consumer_Secret", "xxxxxxxxx");

$accessToken       = "ユーザー毎に発行されたAccess Tokenの値";
$accessTokenSecret = "ユーザー毎に発行されたAccess Token Secretの値";

//接続
$connec = new TwitterOAuth(Consumer_Key,Consumer_Secret, $accessToken, $accessTokenSecret);
//ツイート送信
$connec->post("statuses/update", array("status" => "ツイート内容"));

このユーザー毎の情報があれば、ツイートさせたり、DM(ダイレクトメッセージ)を発射したりもできます。
ちなみにDMを発射するのは、

$connec->post("direct_messages/new", array("user_id" => "ユーザーID","text" =>"ダイレクトメッセージ内容"));

この辺の関数はREST APIsに記載があります。

https://dev.twitter.com/rest/public

定期的にルールも変更されますが、現時点でそれぞれの規制は書かれています。

 

TwitterAPI DMの制限

 

ちなみに案件でDMの検証でおこなってもいましたが、現時点で制限もあり、関数でいうとPOST direct_messages/newはAPI Rate Limitsは、

GET direct_messages 15回/15分
GET direct_messages/sent 15回/15分
  GET direct_messages/show 15回/15分
POST direct_messages/destroy 制限なし
POST direct_messages/new 制限なし (頻繁使用でアカウントを凍結される可能性あり)
参照:https://dev.twitter.com/rest/public/rate-limits

つまりダイレクトメッセージは制限ないが、15分に15回が基準になってると思うので、ホワイトリスト登録がなくなっているような雰囲気からすれば、この制限を基準に送ることになるのかな?フォーラムに情報がないかと確認してみます。

andypiper氏の2015年7月10日の書き込み
Rate limits for DMs are adaptive due to our antispam rules, but from the support page I linked you’ll see that the max is 1000 per day.
DMの制限は俺達のアンチスパムの基準で決めてるぜ、だけどリンク貼ってるから見てくれ、一日1000回ぐらいだろ(意訳)
https://twittercommunity.com/t/rate-limits-for-direct-messages/45666

ユーザー自身が自分に送れば制限がないが、プッシュされてないようだし、ここは調査ですね。
結構告知などで使ってるようだし、この辺の制限を確認かな。

TwitterAPI
最新情報をチェックしよう!
>システム構築・保守に特化した会社です。

システム構築・保守に特化した会社です。

システムの構築・保守運用「システムガーディアン」 社内システム担当が欲しいが、専属で雇うほどの仕事量はない。 必要な時に必要なだけ頼りたいというお悩みを持つ企業様へ専門知識を持って対応を行っております。 サーバから各種システムまで自社・他社で構築されたシステムに対してサポートを行っております。

CTR IMG