![誰でも作れる「つぶやきbot」や「ダイレクトメッセージ送信機」 PHPでTwitterを操作する方法【TwitterAPI 1.1 REST&TwitterOAuth】](https://usedoor.jp/wp-content/uploads/2015/07/twitter-api-thum-150x150.jpg)
PHPからつぶやいたりダイレクトメールを送ったり、フォロワーを確認したりetc...
最終更新 [2015年7月22日]
この記事内には広告リンクが含まれています。
\\どうかフォローをお願いします…//
< この記事をシェア >
TwitterAPI 1.1 REST、TwitterOAuthの使い方、設定方法、オプション、PHPで実際に使う時のコードの書き方などのまとめです。
![](https://usedoor.jp/wp-content/uploads/twitter/api-1-1-rest-twitteroauth/000.jpg)
PHPからTwitter API1.1を操作する作業(TwitterOAuth絡み)があったのでメモりがてら使い方をまとめました。
TwitterOAuthをちょっと変更したりとPHPで使うために微妙にハマりました。。
■今回使った環境とやったこと
【要件】
PHPを実行して自動つぶやきとダイレクトメッセージを送信する
(Twitterアカウントは自分のもの)
・PHP 5.3.3
・TwitterAPI 1.1
・TwitterOAuthは20156/15付けで更新されているバージョンのもの
APIの項目一覧などもできる限り作っていまっす。
PHPなどからTwitterを操作するアプリ作成(つぶやきbotやダイレクトメッセージ送信機とかもいける)をされる人の役にちょっとでも立てれば嬉しいでっす。
TwitterAPI 1.1 REST&TwitterOAuthの使い方(PHPコードあり)
アプリを使うTwitterアカウントでログイン
![](https://usedoor.jp/wp-content/uploads/twitter/api-1-1-rest-twitteroauth/001.jpg)
何にしてもTwitterにログインしていないと始まりませんので↑からTwitterにログインします。
新規登録してそのままログインでもOKです。
先に注意!電話番号認証済のTwitterアカウントじゃないとアプリが作れない
Error
You must add your mobile phone to your Twitter profile before creating an application. Please read https://support.twitter.com/articles/110250-adding-your-mobile-number-to-your-account-via-web for more information.
が、Twitter Application ManagerのTwitter Appsを作成する場合、電話番号認証が終わったアカウントが必須となります。
昔はこんなのなかった気がしたのですが、電話番号認証がいつの間にか必須になったんだなぁ。。
電話番号認証が済んでいない場合、アプリケーションを作ろうとすると電話番号認証してないユーザーだよというエラーが表示されます。
アプリの作成は↓に書いていきますが、先に電話番号認証済Twitterアカウントが必須のことのみ書いておきまっす。
Twitter Application Managerでアプリ作成、キー取得
![](https://usedoor.jp/wp-content/uploads/twitter/api-1-1-rest-twitteroauth/003.jpg)
Twitterにログインした状態で↑のTwitter Application Managerにアクセスします。
「Create New App」をクリックします。
![](https://usedoor.jp/wp-content/uploads/twitter/api-1-1-rest-twitteroauth/004.jpg)
作成するアプリの概要を決めます。
Name:アプリケーションの名前(表示名)
Description:アプリケーションの説明(英数字10文字以上)
Website:アプリを使うウェブサイト
Callback URL:アプリを認証した後にジャンプするURL
ちゃんとユーザーにアプリとして提供したりする場合は、Callback URLなどを適切な設定をしておかないといけませんが、今回のように自分のアカウントで自分だけが使う場合は、基本的にアバウトでOKです。
最後に定番の読めない規約に同意するため、「Yes, I agree」にチェックを入れて「Create your Twitter application」をクリックします。
![](https://usedoor.jp/wp-content/uploads/twitter/api-1-1-rest-twitteroauth/005.jpg)
↑「usedoor test」というアプリケーションを作ってみたところ。
Access tokenとAccess token secretを作成
![](https://usedoor.jp/wp-content/uploads/twitter/api-1-1-rest-twitteroauth/006.jpg)
アプリページの上部にある「Keys and Access Tokens」をクリックします。
表示されているものは、一旦置いといて、下部にあるYour Access Tokenの下のボタン「Create my access token」をクリックします。
![](https://usedoor.jp/wp-content/uploads/twitter/api-1-1-rest-twitteroauth/008.jpg)
この画面になればOKです。
・Consumer Key (API Key)
・Consumer Secret (API Secret)
・Access Token
・Access Token Secret
この画面上に書いてある↑を後から使うことになるのでメモっておきます。
ダイレクトメール関連を使うならパーミッションを変更
![](https://usedoor.jp/wp-content/uploads/twitter/api-1-1-rest-twitteroauth/009.jpg)
ちなみに自動ツイートなどはこれでOKですが、ダイレクトメッセージ関連を使う場合は、アプリのページ上部の「Permissions」タブからアプリのアクセス権限を「Read, Write and Access direct messages」に変更しておく必要があります。
これでTwitter側の設定は完了となります。
PHPを使う!TwitterOAuthをダウンロード
![](https://usedoor.jp/wp-content/uploads/twitter/api-1-1-rest-twitteroauth/010.jpg)
⇒ https://github.com/abraham/twitteroauth
GitHubからTwitterOAuthをダウンロードします。
↑にアクセスして、ページ右にある「Download ZIP」をクリックしてダウンロードします。
ダウンロードしてきたtwitteroauth-master.zipファイルを解凍します。
ちなみにこの記事作成時のTwitterOAuthの最終更新日は2015/6/16となっていました。
解凍したフォルダ「twitteroauth-master」をPHPからTwitterAPIを使うサーバーにそのままアップロードします。
TwitterOAuthを実行する自前のphpを作成
実際にTwitterアカウントを動かす処理を書く自前のPHPを作成します。
今回は、tw.phpという名前にして↑でアップロードした「twitteroauth-master」と同じディレクトリ階層にアップロードします。
ここでは、とりあえずtw.phpの中身は空で大丈夫でっす。
![](https://usedoor.jp/wp-content/uploads/twitter/api-1-1-rest-twitteroauth/011.jpg)
これで準備完了となります。
【PHPコード】TwitterAPIを実行するPHPを書く(tw.php)
![](https://usedoor.jp/wp-content/uploads/twitter/api-1-1-rest-twitteroauth/060.jpg)
phpにはエラー表示させておいた方がいいかも
使っているサーバーの環境やphp.iniの設定によってはPHP上にエラー表示をさせてないというパターンがあると思います。
TwitterAPIをポチりにいっていてエラーが出た際にエラー内容が表示されないと何がなんだかわかりません。。
なので自分は、今回作成するPHP(tw.php)のアタマにエラーを吐き出す設定にしておきました。
ini_set( ‘display_errors’, 1 );
を書き加えるだけでOKです。
TwitterOAuthの中にあるautoload.phpを読み込む
require “twitteroauth-master/autoload.php”;
use Abraham\TwitterOAuth\TwitterOAuth;
TwitterOAuthの中にあるautoload.phpを読み込み、使用する宣言を書いておきます。
Twitter認証情報を書き込む
//値を設定
$consumerKey = “○○○”; //Consumer Key (API Key) の値
$consumerSecret = “■■■”; //Consumer Secret (API Secret)の値
$accessToken = “△△△”; //Access Tokenの値
$accessTokenSecret = “×××”; //Access Token Secretの値
//上記の情報で接続
$connec = new TwitterOAuth($consumerKey, $consumerSecret, $accessToken, $accessTokenSecret);
Twitterアプリのページから取得した接続情報4つを持ってTwitterOAuthと接続します。
いざ実行!とりあえずPHPを使ってツイートしてみる。
$connec->post(“statuses/update”, array(“status” => “これはPHPから実行してツイートしまっした。”));
↑は「statuses/update」という「新規つぶやきを行う」リソース。
オプションの「status」はツイートの内容になります。
これを実行すれば「これはPHPから実行してツイートしまっした。」というツイートが投稿されていると思います。
PHPで自動ツイートする全コード
<?php
require “twitteroauth-master/autoload.php”;
use Abraham\TwitterOAuth\TwitterOAuth;
$consumerKey = “○○○”; //Consumer Key (API Key) の値
$consumerSecret = “■■■”; //Consumer Secret (API Secret)の値
$accessToken = “△△△”; //Access Tokenの値
$accessTokenSecret = “×××”; //Access Token Secretの値
$connec = new TwitterOAuth($consumerKey, $consumerSecret, $accessToken, $accessTokenSecret);
$connec->post(“statuses/update”, array(“status” => “これはPHPから実行してツイートしまっした。”));
まとめてしまえば非常にシンプルでっす。
TwitterOAuthで表示されたエラーと対応方法(自分に出たやつ。。)
![](https://usedoor.jp/wp-content/uploads/twitter/api-1-1-rest-twitteroauth/061.jpg)
src/TwitterOAuth.php on line 334
Parse error: syntax error, unexpected ‘[‘ in twitteroauth-master/src/TwitterOAuth.php on line 334
なぜか1ミリも触っていない「TwitterOAuth.php」にてsyntax error。。
これTwitterOAuth.phpの一部を↓のように変更することで直りました。
■変更前
if (in_array($method, [‘GET’, ‘PUT’, ‘DELETE’]) && !empty($postfields)) {
↓↓
■変更後
if (in_array($method, array( ‘GET’, ‘PUT’, ‘DELETE’) ) && !empty($postfields)) {
配列の渡し方の問題ってこと…?
ダイレクトメッセージを送る処理でOAuthRequest()が『Call to private method』
Fatal error: Call to private method Abraham\TwitterOAuth\TwitterOAuth::OAuthRequest() from context
こちらはダイレクトメッセージ送信を行う処理(->OAuthRequest)を使ったときに発生したエラー。。
「TwitterOAuth.php」にあるfunctionのoAuthRequest()がprivateになっているから触ることができずエラーになっているようです。
privateを消してやれば普通に実行できます。
■変更前
private function oAuthRequest($url, $method, array $parameters)
↓↓
■変更後
function oAuthRequest($url, $method, array $parameters)
自分で試した感じでは、privateをハズしても特に他の動きに影響はなさそうでした。
はっきり言ってもっと正当なやり方があるとおもいますが、とりあえずprivate消すだけで動くことは動きます。
TwitterAPI 1.1 REST&TwitterOAuthで使えるAPIまとめ紹介
![](https://usedoor.jp/wp-content/uploads/twitter/api-1-1-rest-twitteroauth/070.jpg)
REST APIを使うにはOAuth認証が必須でっす。
APIのバージョンが1.1になって取得できるデータはjsonからのみとなっています。
1.0からボチボチと変更点がありますので1.0を使っていたユーザーさんは覚えておいた方がよさそうです。
REST APIは大量に用意されています。
本家TwitterDevelopersページにて全て紹介されていますが、まぁ英語。。
そんな中、DX.univさんがものすごく丁寧に『TwitterAPI1.1 REST API 全項目解説』という記事を書かれていて、とーってもわかりやすかったので紹介します。
基本的にTwitterでできることならほとんどできるREST API
PHPなどからガンガン操作できるのでいろいろと試してみてくださいな。
[リンク]
・マジでわかりやすい!【保存版】TwitterAPI1.1 REST API 全項目解説
・本家TwitterのREST APIsページ
< この記事をシェア >
\\どうかフォローをお願いします…//
この誰でも作れる「つぶやきbot」や「ダイレクトメッセージ送信機」 PHPでTwitterを操作する方法【TwitterAPI 1.1 REST&TwitterOAuth】の最終更新日は2015年7月22日です。
記事の内容に変化やご指摘がありましたら問い合わせフォームまたはusedoorのTwitterまたはusedoorのFacebookページよりご連絡ください。