Skip to content

気ままにWeb

webに関するもろもろ書いていきます。

気ままにWeb

TwitterBotを作る[PHP]

いきなりもちあがった企画の為、Twitterのbotを作らなければならなくなりました。
そんなに難しくないとは思っていましたが、実際のやり方などは全く知らないので、とりあえず調べながら作ってみます。

調べてみると、一番簡単なのはBASIC認証つかってhttp://twitter.com/statuses/update.xmlへリクエストを投げる方法らしい。
http://twitter.com/statuses/update.xml?status=message
のmessageのところにツイートしたい文字列を入れておくだけで、Twitterに投稿できます。
ただ、ユーザー名とパスワードを求められるので、プログラムで処理する場合は、これを自動で渡す処理がいります。

早速Googleさんでサンプルコードを検索すると、
http://d.hatena.ne.jp/bardothodol/20090930
↑にサンプルが載っていました。

curl
ってのを使うらしいですね。
必要とおぼしき部分だけ抽出してサンプルコードを作ります。

<?php
$username = "hoge";
$password = "foo";
$message = "テスト"

tweet($message ,$username,$password);

//ポスト部分の関数
function tweet($message ,$username,$password){
	$message =urlencode($message);
	$ch = curl_init();
	curl_setopt($ch, CURLOPT_URL, 'http://twitter.com/statuses/update.xml');
	curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 2);
	curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
	curl_setopt($ch, CURLOPT_POST, 1);
	curl_setopt($ch, CURLOPT_POSTFIELDS, "status=$message ");
	curl_setopt($ch, CURLOPT_USERPWD, "$username:$password");
	$buffer = curl_exec($ch);
	curl_close($ch);
}
?>

これで、「テスト」というツイートがhogeアカウントに投稿されます。
さすが簡単お手軽。

ただ、BASIC認証は近々廃止予定のようです。
http://blog.twitter.jp/2010/06/twitter-api-oauth.html
なんと2010/8/31からは全部403が返ってきてしまうという…。

簡単お手軽な方法が見つかったと思ったのに、別の方法を探す必要があるようです。

もうひとつの認証方法は、OAuth認証というらしいですね。
このOAuth認証、ちょっと調べた限りでは作り込むのが非常に面倒臭そうです。

そこはそれ、作っている人がいるわけです。
世の中便利ですね。

http://github.com/abraham/twitteroauth
から、
twitteroauth/OAuth.php
twitteroauth/twitteroauth.php
を入手します。
これで簡単にOAuth認証が可能になるみたいです。

さらに、OAuth認証をするには投稿するアカウントでAPI登録をして、各種のキーを取得しなければならないようなので、さっさと取得します。

まずは投稿するアカウントでTwitterにログインしてから、以下のアドレスにアクセスします。
http://dev.twitter.com/apps/
必要事項を入力して登録すると、Consumer key、Consumer secretが表示されます。
OAuth認証にはあと、Access_Token、Access Token Secretが必要になります。
もう一度さっきのアドレスにアクセスして、アバターをクリックします。
API設定の画面が出てくるので、右メニューの「My Access Token」をクリックします。
そうすると、最後の二つのキーが表示されますので、全部メモなりなんなりしておきます。

defineに書いておきました。

<?php
##Twitter関連
define("consumer_key","hoge");		// Consumer keyの値
define("consumer_secret","foo");	// Consumer secretの値
define("access_token","hogehoge");	// Access Tokenの値
define("access_token_secret","foofoo");	// Access Token Secretの値
?>

みたいな形です。

下のサイトでダウンロードしたモジュールをつかったサンプルを見つけたので、これも必要な部分だけ抽出してみます。
http://www.sdn-project.net/labo/oauth.html

twitteroauthに関しては、twitteroauth/twitteroauth.phpを読み込めば後はよきに計らってくれるみたいなので、頭でrequire_onceで呼び出しておきます。

<?php
require_once "twitteroauth/twitteroauth.php";

##Twitter関連
define("consumer_key","hoge");		// Consumer keyの値
define("consumer_secret","foo");	// Consumer secretの値
define("access_token","hogehoge");	// Access Tokenの値
define("access_token_secret","foofoo");	// Access Token Secretの値


PostTweet("テストです。");

# クーポンテキストをTwitterにPOST
# PostTweet
############################
function PostTweet($message){
	// OAuthオブジェクト生成
	$to = new TwitterOAuth(consumer_key,consumer_secret,access_token,access_token_secret);
	// TwitterへPOSTする。パラメーターは配列に格納する
	$req = $to->OAuthRequest("https://twitter.com/statuses/update.xml","POST",array("status"=>"$message"));
}
?>

ざっとこんな感じです。
上のコードを実行すると、Twitterアカウントに「テストです。」がPostされます。
Postだけならとても簡単でした。

PHP

コメントを残す コメントをキャンセル

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

CAPTCHA


このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください。

Idealist by NewMediaThemes