「PHP + OAuth」で特定ユーザーのツイートを公式RTするbotを作成してみた。その1 | φ(..)メモとして残しておこう…

「PHP + OAuth」で特定ユーザーのツイートを公式RTするbotを作成してみた。その1


昨日、最近あまり顔を出していなかった公設市場近くの『CHATAN-COFFEE CafeStreet』のオーナーから、こんな相談を受けました。

「スタッフのツイートを自動で公式RTしたいんだけど…」

オーナーは普段から公設市場まわりのことをツイートしていたのですが、最近は忙しくてなかなかお店の方に顔を出せない…とのこと。
で、スタッフにつぶやいてもらって、そのつぶやきを「@chatancoffee」(公式アカウント)で公式リツイートしたいということらしいです。

というわけで、サクっと「特定の人のツイートを自動で公式RTするbot by PHP + OAuth」を作ってみることにしました。


『twitteroauth』でOAuth認証をする


とはいえ、OAuthの機能を独自で1から作りこむのもアレなんで、ライブラリを探してそれを使っちゃおうと思います。

で、見つけたのがこちら。
The first PHP library for working with Twitter's OAuth API.

では、早速ダウンロードしてみましょう。

ダウンロードしたファイルを解凍すると、いろいろなファイルが入っているかと思いますが、今回使用するのは
「twitteroauth」フォルダの中の
・OAuth.php
・twitteroauth.php
の二つだけです。

最近のプログラムは、こんな感じでフリーで提供されているライブラリを使ったり、開発ツールに入っている機能を使ったり…と難しいプログラムを一からしなくていいというのが特徴かも。
プログラム言語 = Magic Spells
ということを考えると、まるで召喚魔法のような感じですね。

召喚魔法はとても便利なので、RPGでもついつい頼ってしまいがちになりますが、ライブラリも同様です。
良いか悪いかではなく、ライブラリしか使えない…というプログラマもいたりして。

個人的には召喚魔法も立派な魔法なので、「プログラマ = 魔法使い」を自称してもいいんじゃないかなと思います。

よく、「○○したことがないやつはプログラマを自称するな」とか言っちゃってる人とかいますが、僕は全然構わないと思います。


twitterアプリケーションの登録



「twitteroauth」のダウンロードが終わったら、今度は今から作るアプリケーションをTwitterに登録します。

今回作るbotは、ユーザーに代わって「特定ユーザーの発言を公式RTする」わけですから、その権限が必要になります。
その権限がないと、botはあなたの代わりに公式RTすることができません。
その権限を持っているかどうか認証するのに「OAuth」を使うわけですね。

というわけで、アプリ登録をしに行きます。
https://dev.twitter.com/apps
   ▲
ここがTwitterアプリを登録するデベロッパーセンターです。


まずは、自分のアカウントでログインしましょう。



次に、「Create a new application」をクリックしてアプリケーションの登録を行います。



登録項目は
・Name(アプリケーションの名前)
・Description(アプリケーションの説明)
・WebSite(アプリケーションをサービスとして提供するWebサイト。別にどこでも構わないです。)
の3つです。

項目の入力が終了したら、規約に同意「Yes, I Agree」をチェックして「Create your Twitter application」で登録です。



アプリ登録が終わったら、「Setting」タブから登録内容の変更を行います。
今回変更するのは、アプリケーションタイプです。
RTする(書き込む)ということなので「Read only(読み込みのみ)」ではなく「Read and Write(読み込みと書き込み)」に変更です。
ラジオボタンのチェックが終了したら、「Update this Twitter application's settings」を押して、更新します。



ここまで出来たら、「Details」タブで最初の画面に戻ってアクセストークンの発行をします。
「Recreate my acess token」ボタンを押すと、アクセストークンが発行されます。
今回、「twitteroauth」で必要になるのは

Consumer key
Consumer secret
Access token
Access token secret

の4つです。
「Access level」がきちんと「Read and Write」になっているかどうかも確認しておきましょう。




とりあえず、今回はここまでです。
続きは次回。。。