お知らせ:このサイトは閉鎖します。移転先についてはhttp://projectroom.jphttp://haukun.projectroom.jpを参照ください。
新約聖書 マタイによる福音書朗読TwitterBot @BibleJP_Matt好きなテキストをiPhoneの壁紙に。iPhone用Webアプリ「ポステラ」聖書 創世記朗読TwitterBot @BibleJP_GenCodeOfCelestia -数学的壁紙配信サイト-

OAuth対応のTwitterBotをPHPで作るための備忘録とか

公開日:2011/05/07 (Sat)
記事No:996

最近始めたTwitterの聖書朗読プロジェクトでは、TwitterAPIというものを利用して、プログラムで所定時刻にツイートするという手法を使っています。
このTwitterAPIを使う設定の仕方を毎回忘れてしまうので、ここに備忘録として記事を残しておきます。

あくまで私個人のメモなので、正しいとは限りません。
一次情報はTwitterヘルプセンターなどを確認してください。

レシピ

目次

1.アプリケーションの構想
2.アプリケーションの登録
3.アプリケーションの開発

対象

「phpinfo表示して」と言われたら、実際に表示できるレベルの人。

目的

Twitterで自動で呟きを行うTwitterBotをPHPのプログラミングで作ること。

必要なもの

●サーバー
今回はSAKURA Internetさんを使いました。ちなみにレンタルサーバーのスタンダードプランになります。
主にサーバーに必要な機能は、TwitterBotを動かすためのPHPと、時間を指定してプログラムを起動するためのcronです。あとPHPを動かすためにapacheとかその辺も必要です。(SAKURA Internetはこれらがすべてそろっています)
●Twitterアカウント
TwitterBotにするアカウントが必要です。
なお、既存アカウントの流用も可能です。「このアカウントはBot」と決めるのは開発者自身です。Botにしても手動で投稿できますし、普通に使っていたアカウントをBotにすることもできます。
●がんばる気持
何かを作るためにはがんばる気持がかかせません。


1.アプリケーションの構想

まず、構想を練ります。下記のことは決めておくとよいでしょう。

基本的な設定

●ツイートの頻度
ツイートの上限は1分間に60回までという表記をどこかで見たのですが、公式では確認できませんでした。あんまりたくさんのツイートはできないと思います。
●ツイートの内容
ツイートする文章をどこに保存し、どうやって読みだして使うのかを決めておきましょう。(他人の文章を使う場合は著作権などに注意)。(※ツイートデータの管理方法は本記事では扱いません。)
また、ツイートはランダムにするのか、番号を振っておいて順番にするのかなども決めておきましょう。
●フォローの扱い
お返しフォローするのかどうか、こちらからフォローするのかどうか、などなど。

ポリシー

システムを作る時全般に言えますが「ポリシー」を決めておくと、開発中や運用中などに考えが揺らいだ時にどうするかの判断に役に立つかと思います。(○○を実現するために作る! ◇◇がゴール など)
余談ですが、聖書朗読プロジェクトのポリシーは「私が聖書を読みたいからそのために作った」です。なので、途中でフォロアーが0になろうとも、(著作権関連以外で)何を言われようとも、私が読みたい限り続けます。

アカウント名

Twitterのアカウント名は先着順なので、早めに確保しておくのが吉です。
ですが、Twitterルールにもあるように、スパム・不正利用・確保のためだけの大量のアカウント取得などはルール違反です。
私は、Twitterがどのような思想で動いているかを自分なりに理解した上での「健全」な使い方をするのであれば問題ない、と思っています。

2.アプリケーションの登録

さて、では実際の作業に入ります。

TwitterOAuthの準備

TwitterAPIをOAuthで使えるライブラリをabrahamさんがgithubで公開しているので、これを使います。これは結構楽に扱うことができるので重宝しています。
twitteroauth(github)
Downloadsのリンクで落とせます。今回は0.2.0-beta3を使いました。

実際に使うのは「twitteroauth」フォルダの中身だけです、それをサーバーにアップロードします。

Twitterアプリケーション連携の準備

Twitter側でアプリケーション連携の設定を行います。この連携設定によって「このアカウントでは、○○アプリケーションを使います」という許可を行うことができ、 プログラムからツイートを行うことができるようになります。
アプリケーションの連携はhttps://dev.twitter.com/appsで行います。(http://twitter.com/appsというのもありましたが、これだとDefault Access typeの設定がRead-onlyになってしまい、Read&Writeに修正しても、変更されませんでした。)
アクセスできたらRegister a new appを選択しましょう。

アプリケーションの設定を記入します。内容は後から変更可能です。
Application Name:アプリケーション名です。公開しないのであれば自分が分かる文章で良いと思います。
Description:アプリケーションの説明です。これも、公開しないのであれば適当で良いでしょう。
Application:Website:アプリケーションのホームページURLです。これも、公開しないのであれば(略
Oranization:アプリケーションの開発組織名です。これも(略
Application Type:今回はPHPから動かすので、Browserを選択します。(正確にはブラウザというより、インタネットアクセスなのですけどね)Windowsアプリケーションとして開発する場合などはClientを選択するのですね。
Callback URL:プログラムとTwitter認証を連携した場合のコールバック先ですが、今回はそういうことは行わないので、適当で良いと思います。
Default Access type:今回は開発するアプリケーションがツイート(つまりWrite)するのでRead&Writeを選択します。なお、このHPの左端のように、ツイートを表示(Read)するだけならRead-onlyでOKです。
Application Icon:アプリケーションのアイコンです。先ほどのアプリケーション連携ページに表示される画像ですので、(略
CAPTCHA:最後に、ユーザー登録などでよくある「読みにくい文字が表示されてて、その文字を入力する」場所があるので、それを入力します。
2つの単語の間のスペースは必要みたいです。成功するまで何度もがんばります。

無事に登録が完了すればOKです。

アクセスキーの取得

登録したアプリケーションページでConsumer keyとConsumer secretというキーフレーズを得ることができます。これは、プログラムで利用するので覚えておきます。

このキーフレーズはまさに鍵で、アプリケーションがこの鍵を使ってツイッターを操作することになります。できるだけ秘密にしておきましょう。

同じく、アプリケーションページの右側のメニューから「My Access Token」を選択します。

すると、Access TokenとAccess Token Secretを得ることができます。先ほど得た物と合わせて4つのフレーズをプログラムで利用します。

3.アプリケーションの開発

これで鍵がそろったので、アプリケーションを開発することができます。

Hello World!

下記が「HelloWorld!」になります。
ライブラリは最初にダウンロードしたTwitterOAuthのものですので、適切なパスにして修正してください。

<?php
  //  TwitterOAuthのライブラリ読み込み
  include_once './twitteroauth/twitteroauth.php';

  //  キーの設定
  $consumer_key         = "/* ここにConsumer key */";
  $consumer_secret      = "/* ここにConsumer secret */";
  $access_token         = "/* ここにAccess Token */";
  $access_token_secret  = "/* ここにAccess Token Secret */";

  //  認証
  $twitter = new TwitterOAuth($consumer_key, $consumer_secret, $access_token, $access_token_secret);
  
  //  つぶやく
  $text = "Hello World!";
  $req = $twitter->OAuthRequest("https://twitter.com/statuses/update.xml", "POST", array("status" => $text));
  
  var_dump($req);

このプログラムをサーバーにアップロードし、そのファイルにブラウザからアクセスすることでツイートが投稿されます。(なので、URLは他者からは分からないものにしておきましょう。)

その他

上記は投稿しかしませんが、TwitterAPIの仕様としてhttp://apiwiki.twitter.com/w/page/22554679/Twitter-API-Documentationを参考にすることで OAuthRequest()の引数を変更して、Twitterで行える操作をプログラムから操ることができます。

ちなみに、同じ内容を連続して発言すると「/statuses/update.xml Status is a duplicate.」というエラーが返ってきます。文章を変更するなどで対処してください。

完成

これで、TwitterBotが完成です。あとは、ツイート文章の読み込み部分を好きなようにプログラムして、TwitterBotを開発していきましょう!

おまけ:cron

なお、特定の時間にツイートする場合は、サーバーのcronを用います。
SAKURA Internetでは、cronでもいったんPHPのパスに移動しないとPHPが実行できないようなので、
cd /home/アカウント名/www/phpがあるフォルダへのパス ; /usr/local/bin/php /home/アカウント名/www/phpがあるフォルダへのパス/phpファイル.php
と記述します。これで、cronの指定時間ごとにツイートが行われるようになります。


このコンテンツへのコメント
ID:970 ふみ 2011-05-07 22:38:13
Bot、というか
"決めた時間に投稿"について
今度相談したいことがあるので
お時間ある時に良ければお願いします
ID:971 はぅ君@管理人 2011-05-07 22:43:10
>ふみさん
どーも(・-・)ノ
いつでもOKですよん
コメントフォーム
名前
(Max15文字)
削除パスワード
(Max15文字)
コメント
(Max1500文字)
コメントを投稿する※投稿する場合はこちらをチェック。
コメントを削除する※名前欄にIDを、削除パスワードに投稿時のパスワードを入れることで削除できます。

2013年もよろしくお願いいたします!

合計 228095
12/12 20
12/11 99
12/10 80
12/09 93
12/08 78
12/07 93
12/06 98
1,722,433
478 時間
19
5.4617
[とても昔]
アプリ内は良さそうだけど、ホーム画面はのっぺりしちゃうなぁ…。
[とても昔]
次のOSXそう来たかw
[とても昔]
SurfaceProゲットなう。思ったよりタッチ画面が使いやすかった。キーボードの縦幅短いから、画面と近いからかな。 これで、Win8/iOS/Androidアプリどれでも作れる! http://t.co/7CXQCVVao5
[とても昔]
じわじわくるw >RT
[とても昔]
スタジオレンタルして、15年ぶりにピアノを弾くなう。あとステージアも初体験できて良かった。近場で便利。フロッピーじゃなく、USBでレジストいけるのね。楽譜もネットで購入→印刷できるので、買いに行く必要すらなくなった。すごい時代。 http://t.co/9gRBztS2UB
@Hau_kun

Twitterでマタイによる福音書を読んでみませんか @BibleJP_Mattで朗読中 Twitterで創世記を読んでみませんか @BibleJP_Genで朗読中 好きなテキストをiPhoneの壁紙に。iPhone用Webアプリ「ポステラ」

区切り線
はぅ君プロジェクトについて

管理人はぅ君の運営する個人ポータルサイトです。
技術・思想・ソフトウェア・その他もろもろをコンテンツとして公開していきます。
ご意見・ご感想・要望は、各コンテンツのコメントか、お問い合わせよりどうぞ。

Rss 1.0 RSS1.0のフィード