とりあえず動作させてみよう「PHP+OAuthでTwitterに投稿」(追記あり)
何がやりたいか?
Nb4uにある新書データ(10日以内に発売予定の新書)を元に1日に1回(ぐらい)自動で投稿する。
投稿する内容は以下のような形式
「本の名前」 発売まであとX日 http://nb4u.pplace-service.com/ #nb4uinfo
やったこと
- twitter developersに登録
- すぐに使えるスクリプトとしてtwitteroauth.phpとOAuth.phpをdownload
- cron用のスクリプトを記入
- cronに登録
1. twitter developersに登録
登録する際にログインしているのは、自動投稿したいTwitterアカウントにします。
記述した内容は以下のような感じです。
- Application Name
- ○○から投稿で表示される名前/「私の場合はnb4u_bot」にしました。
- Description
- Application Website
- Organization
- Application Type
- Callback URL
- 今回の用途では利用しません。
- Default Access type
- 書き込みが必要なので「Read & Write」にしています。
- Application Icon
- 今回の用途では特に利用しません。
登録が終わったら必要な値を取得しておきます。
「Application details」をクリックして以下の2つを取得します
- コンシューマー・キー
- コンシューマー・シークレット
さらに「My Access Token」をクリックして以下の2つを取得します。
- Access Token (oauth_token)
- Access Token Secret (oauth_token_secret)
2. すぐに使えるスクリプトの取得
自前で作るのも有りですが、今回は簡単に作ってしまおうということでtwitteroauth.phpとOAuth.phpをダウンロードします。
ダウンロードしたものを展開します。
3. スクリプトを作成
cron用のスクリプトを作成する前に、本当に動くのかを確認します。
<?php require_once("twitteroauth.php"); //2でダウンロードしたファイルを読み込みます。 $consumer_key = "1で取得したコンシューマー・キー"; $consumer_secret = "1で取得したコンシューマー・シークレット"; $access_token = "1で取得したAccess Token"; // $access_token_secret = "1で取得したAccess Token Secret"; $twitter = new TwitterOAuth($consumer_key,$consumer_secret,$access_token,$access_token_secret); //Twitterへ投稿します。 $req = $twitter->OAuthRequest("https://twitter.com/statuses/update.xml","POST",array("status"=>"サンプル投稿"));
上記のスクリプトを実際に動かしてみて問題ないので、cron用のスクリプトを作成。
作り方は、定期的にデータ取得のためにCakePHP1.3でシェル機能を利用 | PPl@ceを参考。
※以下はサンプルです。
<?php class BatchShell extends Shell { var $uses = array('book'); function main() { $newBookData = $this->book->getNewBookData(); if(empty($newBookData)) return; require_once("twitteroauth.php"); //2でダウンロードしたファイルを読み込みます。 $consumer_key = "1で取得したコンシューマー・キー"; $consumer_secret = "1で取得したコンシューマー・シークレット"; $access_token = "1で取得したAccess Token"; // $access_token_secret = "1で取得したAccess Token Secret"; $twitter = new TwitterOAuth($consumer_key,$consumer_secret,$access_token,$access_token_secret); foreach($newBookData as $key => $val) { $message = "「 " . $val["title"] . "」 発売まであと". $val["days"] ."日 http://nb4u.pplace-service.com/ #nb4uinfo"; $req = $twitter->OAuthRequest("https://api.twitter.com/1/statuses/update.xml","POST",array("status"=> $message)); } } }
[追記]
2012年10月頃から「https://twitter.com/statuses/update.xml」は利用できなくなりました。
そのためバージョンを明記した「https://api.twitter.com/1/statuses/update.xml」に変更する必要があります。
4. cronに登録
そして最後は、cronに登録。
Twitterでは、同じ内容を投稿するのはアウトなので内容が変わるように1日に1回投稿するようにに調整。
これで自動で投稿されるようになりました。
まとめ
これで、自分のアカウント(nb4u_bot)での自動投稿はできるようになりました。
他のユーザに対してこのようなことをするには、もう少し面倒なことをする必要が有ります。
ただ、それは今回とは異なるまた別の話。
※それもこの前、1から実装したので、どこかで機会があれば書きます。
参考サイト
広告
関連記事
-
Jenkins + iPhoneアプリ(2) -ローカルリポジトリにあるデータからipaファイル生成-
* これまで - * 最終目標 -(開発者)git(リモートリポジトリ)にソースをコミット
-
iPhoneアプリ開発 −タッチで線を描く(1)−
* やりたいこと 今回やりたいことは以下の2点。 -(1) 画面をタッチして、指を動かして線を描きた
-
iPhoneアプリ開発 -iOS6から変わったこと-
Deployment Targetを5.1にしていた時には気がつかなかったのですが、iOS6になって
-
Facebookで名刺を作ってみた -Mooの名刺作成サービス-
1ヶ月~半月くらい前に話題になっていたMooの名刺作成サービス。 話題になっていた時期に注文した名
-
PHP_CodeSniffer+ Eclipse + PHP Code Formatter Pluginでコーディング規約を守ったコーディング
1人でプログラミングをしているにしても、多人数でプログラミングをしているにしても、コーディング規約を
-
Twitterでサービスにログイン -PHP(CakePHP1.3)で実践編-
以前、ソーシャルログインについて書きました。 ただ、Twitter連携にまだ触れてない人にはちょ
-
jQuery Mobileの1.0Beta3、1.0RC1で起きた現象 -iOS5で動かない!?-
最近おきたjQuery Mobile周りについてのメモ。 本来なら色々チェックしてちゃんと原因を調
-
CakePHP1.3でテストコード(2) -フィクスチャをいじってみる(テストデータの動的登録)-
cakePHP1.3でのSimpleTestを使ったテストケースの第2回目。 今回は、動的にテストデ
-
「Google Apps」無償版の新規登録が終了
以前、「Google Apps」を利用した以下の記事を書きましたが、とうとう無償版の新規登録が終了
-
はてなスターのアイコンを日本酒アイコンにしてみた
日本酒大好きです。 というわけで、はてなスターを日本酒アイコンにしてみました。 その流れ