※上記の広告は60日以上更新のないWIKIに表示されています。更新することで広告が下部へ移動します。

PHPファイルを編集する上で、基本使いそうなPHP制御構造等はTwitter Bot関連リンクにお勧め解説サイトをリンクしています。
※wikiの編集が分からなくて、追加してほしい項目がある場合はページ下の「コメントを書く」から誰かに頼んで下さい。

ver.1.42でOAuth認証するには

phaさんが開放して下さっているもの(EasyBotterから)を使う場合の解説です。

ファイルの用意

PHP+OAuthでTwitterさんで配布されているoauth_test.txtTwitter API Wiki / OAuth Examplesで配布されているver0.2.0以上のzipファイルをDLして下さい。
zipは解凍して、OAuth.phptwitterOAuth.phpだけ使用します。~~oauth_test.txtはoauth_test.phpへ改名して下さい。
reply_random.php等を置いている同ディレクトリ内へアップロードして下さい。

Access Tokenの取得

  1. BOTアカウントでTwitterへログインする。
  2. こちらのページから"OAuth認証について"をクリック。
  3. アプリケーションを許可するか聞かれる→許可をクリック。
  4. その後、転送されたページに表示されている''Access Token/Access Token Secretの値2つをメモする。''

reply_random.phpの編集

reply_random.php内

//各種設定
chdir(dirname(__FILE__));
require_once("Services/Twitter.php");
require_once('Services/Twitter/Jsphon/Error.php');
require_once("Services/Twitter/Jsphon/Decoder.php");

の直後へ

require_once("twitterOAuth.php");
$consumer_key = "WtNt5W6js77cFHvKyVgf6Q"; // Consumer keyの値
$consumer_secret = "h3In28YiiRxtg4PTpkhPmrlJSGOCTG2oh3hslQ"; // Consumer secretの値
$access_token = ""; // Access Tokenの値
$access_token_secret = ""; // Access Token Secretの値

$to = new TwitterOAuth($consumer_key,$consumer_secret,$access_token,$access_token_secret);
$replydata = $to->OAuthRequest('http://twitter.com/statuses/replies.json', array(), 'GET');

を記入する。
※↑に先ほど取得したAccess Token/Access Token Secretを記述する。''Consumer Key/Consumer Secretは弄らないで下さい。''

その付近にある

$st =& new Services_Twitter($username, $password);
$replydata = $st->getReplies();

を代わりに削除して下さい。

次に

//投稿する
$in_reply_to_status_id = $replies2[$i]["id"];                    
$result = $st->setUpdate(array('status'=>$message,'in_reply_to_status_id'=>$in_reply_to_status_id));

を探し、まるまる

//投稿する
$in_reply_to_status_id = $replies2[$i]["id"];
$result = $to->OAuthRequest("https://twitter.com/statuses/update.xml",array("status"=>$message,'in_reply_to_status_id'=>$in_reply_to_status_id),"POST");

へ変更して下さい。

以上でreply_random.phpの編集は終わりです。

post_random.phpの編集

同じくpost_random.php内

//各種設定
chdir(dirname(__FILE__));
require_once("Services/Twitter.php");
require_once('Services/Twitter/Jsphon/Error.php');
require_once("Services/Twitter/Jsphon/Decoder.php");

の直後へ

require_once("twitterOAuth.php");
$consumer_key = "WtNt5W6js77cFHvKyVgf6Q"; // Consumer keyの値
$consumer_secret = "h3In28YiiRxtg4PTpkhPmrlJSGOCTG2oh3hslQ"; // Consumer secretの値
$access_token = ""; // Access Tokenの値
$access_token_secret = ""; // Access Token Secretの値

$to = new TwitterOAuth($consumer_key,$consumer_secret,$access_token,$access_token_secret);

を記入する。

その付近にある

$st =& new Services_Twitter($username, $password);

を代わりに削除して下さい。

次に

//twitterに投稿する
$result = $st->setUpdate($message);

を探し、まるまる

//twitterに投稿する
$result = $to->OAuthRequest("https://twitter.com/statuses/update.xml",array("status"=>$message),"POST");

へ変更して下さい。

以上でpost_random.phpの編集は終わりです。

from.phpの編集

ファイルの中身すべてを削除し

<html>
<head>
<meta http-equiv="content-type" content="text/html; charset=utf-8">
<title>Twitter手動投稿用フォーム</title>
</head>
<body>
<center>
<p>Twitter手動投稿用フォーム</p>
<p>手動で何か投稿させたいときに使ってください。</p>
<form action="form.php" method="POST">
発言内容:<br />
<textarea name="message" cols="20" rows="4"></textarea><br />
<input type="submit" name="submit" value="post" /><br />
</form>

<?php
if(isset($_POST["submit"])){
chdir(dirname(__FILE__));
require_once("Services/Twitter.php");
require_once('Services/Twitter/Jsphon/Error.php');
require_once("Services/Twitter/Jsphon/Decoder.php");
require_once("twitterOAuth.php");

$username = ""; //userid
$consumer_key = "WtNt5W6js77cFHvKyVgf6Q"; // Consumer keyの値
$consumer_secret = "h3In28YiiRxtg4PTpkhPmrlJSGOCTG2oh3hslQ"; // Consumer secretの値
$access_token = ""; // Access Tokenの値
$access_token_secret = ""; // Access Token Secretの値
$to = new TwitterOAuth($consumer_key,$consumer_secret,$access_token,$access_token_secret);

$message = $_POST["message"];

$result = $to->OAuthRequest("https://twitter.com/statuses/update.xml",array("status"=>$message),"POST");

    if($result){
        echo "Twitterへのpostに成功しました。<br />";
        echo "@<a href='http://twitter.com/{$username}' target='_blank'>{$username}</a>に投稿したメッセージ:{$message}";
    }else{
        echo "Twitterへの投稿に失敗しました。パスワードやユーザー名をもう一度チェックしてみてください。<br />";        
        echo "ユーザー名:@<a href='http://twitter.com/{$username}' target='_blank'>{$username}</a><br />";
        echo "投稿しようとしたメッセージ:{$message}";
    }    
}

?>
</center>
</body>
</html>

と書き換えて下さい。
Access Token/Access Token Secretの記述も忘れずに!

備考

このままだと{id}や{timeline_name}と言ったものが使えなくなっています。
reply_random.phpとpost_random.php内

if(preg_match("@{.+?}@",$message) == 1){
//時間などを変換する
	require_once("Services/convert_text.php");
	$message = convert_text($message);

	//id、名前を変換する
	//タイムラインからランダムに最近発言した人のデータを取る
	if(preg_match("@{timeline_id}@",$message) === 1){
		$randomTweet = $st->getRandomTweet(20);
		$message = preg_replace("@{timeline_id}@u",$randomTweet["user"]["screen_name"],$message);
	}
	if(preg_match("@{timeline_name}@",$message) === 1){
		$randomTweet = $st->getRandomTweet(20);
		$message = preg_replace("@{timeline_name}@u",$randomTweet["user"]["name"],$message);
	}
		
	//ランダムな一人のfollowerデータを取る	
	if(preg_match("@{id}@",$message) === 1){
		$randomFollowersData = $st->getRandomfollowersData();
		$message = preg_replace("@{id}@u",$randomFollowersData["screen_name"],$message);
	}
	if(preg_match("@{name}@",$message) === 1){
		$randomFollowersData = $st->getRandomfollowersData();
		$message = preg_replace("@{name}@u",$randomFollowersData["name"],$message);
	}
	if(preg_match("@{follower_id}@",$message) === 1){
		$randomFollowersData = $st->getRandomfollowersData();
		$message = preg_replace("@{follower_id}@u",$randomFollowersData["screen_name"],$message);
	}
	if(preg_match("@{follower_name}@",$message) === 1){
		$randomFollowersData = $st->getRandomfollowersData();
		$message = preg_replace("@{follower_name}@u",$randomFollowersData["name"],$message);
	}

	//ランダムな一人のfollowingデータを取る	
	if(preg_match("@{following_id}@",$message) === 1){
		$randomFollowingsData = $st->getRandomFollowingsData();
		$message = preg_replace("@{following_id}@u",$randomFollowingsData["screen_name"],$message);
	}
	if(preg_match("@{following_name}@",$message) === 1){
		$randomFollowingsData = $st->getRandomFollowingsData();
		$message = preg_replace("@{following_name}@u",$randomFollowingsData["name"],$message);
	}
}

をまるまる

if(preg_match("@{.+?}@",$message) == 1){
	//時間などを変換する
	require_once("Services/convert_text.php");
	$message = convert_text($message);

	//id、名前を変換する
	//タイムラインからランダムに最近発言した人のデータを取る
	if(preg_match("@{timeline_id}@",$message) === 1){
		$timeline_id_result = $to->OAuthRequest("http://twitter.com/statuses/user_timeline.xml?count=20",array(),"GET");
		preg_match_all("/.*?<screen_name>(.+?)<\/screen_name>/is",$timeline_id_result,$timeline_id_kekka,PREG_SET_ORDER);
		$message = preg_replace("@{timeline_id}@u",$timeline_id_kekka[array_rand($timeline_id_kekka)][1],$message);
	}
	if(preg_match("@{timeline_name}@",$message) === 1){
		$timeline_name_result = $to->OAuthRequest("http://twitter.com/statuses/user_timeline.xml?count=20",array(),"GET");
		preg_match_all("/.*?<name>(.+?)<\/name>/is",$timeline_name_result,$timeline_name_kekka,PREG_SET_ORDER);
		$message = preg_replace("@{timeline_name}@u",$timeline_name_kekka[array_rand($timeline_name_kekka)][1],$message);
	}
	//ランダムな一人のfollowerデータを取る    
	if(preg_match("@{id}@",$message) === 1){
		$follower_id_result = $to->OAuthRequest("http://twitter.com/statuses/followers.xml?screen_name=",array(),"GET");
		preg_match_all("/.*?<screen_name>(.+?)<\/screen_name>/is",$follower_id_result,$follower_id_kekka,PREG_SET_ORDER);
		$message = preg_replace("@{id}@u",$follower_id_kekka[array_rand($follower_id_kekka)][1],$message);
	}
	if(preg_match("@{name}@",$message) === 1){
		$follower_name_result = $to->OAuthRequest("http://twitter.com/statuses/followers.xml?screen_name=",array(),"GET");
		preg_match_all("/.*?<name>(.+?)<\/name>/is",$follower_name_result,$follower_name_kekka,PREG_SET_ORDER);
		$message = preg_replace("@{name}@u",$follower_name_kekka[array_rand($follower_name_kekka)][1],$message);
	}
	if(preg_match("@{follower_id}@",$message) === 1){
		$follower_id_result = $to->OAuthRequest("http://twitter.com/statuses/followers.xml?screen_name=",array(),"GET");
		preg_match_all("/.*?<screen_name>(.+?)<\/screen_name>/is",$follower_id_result,$follower_id_kekka,PREG_SET_ORDER);
		$message = preg_replace("@{follower_id}@u",$follower_id_kekka[array_rand($follower_id_kekka)][1],$message);
	}
	if(preg_match("@{follower_name}@",$message) === 1){
		$follower_name_result = $to->OAuthRequest("http://twitter.com/statuses/followers.xml?screen_name=",array(),"GET");
		preg_match_all("/.*?<name>(.+?)<\/name>/is",$follower_name_result,$follower_name_kekka,PREG_SET_ORDER);
		$message = preg_replace("@{follower_name}@u",$follower_name_kekka[array_rand($follower_name_kekka)][1],$message);
	}
	//ランダムな一人のfollowingデータを取る    
	if(preg_match("@{following_id}@",$message) === 1){
		$friends_id_result = $to->OAuthRequest("http://twitter.com/statuses/friends.xml?screen_name=",array(),"GET");
		preg_match_all("/.*?<screen_name>(.+?)<\/screen_name>/is",$friends_id_result,$friends_id_kekka,PREG_SET_ORDER);
		$message = preg_replace("@{following_id}@u",$friends_id_kekka[array_rand($friends_id_kekka)][1],$message);
	}
	if(preg_match("@{following_name}@",$message) === 1){
		$friends_name_result = $to->OAuthRequest("http://twitter.com/statuses/friends.xml?screen_name=",array(),"GET");
		preg_match_all("/.*?<name>(.+?)<\/name>/is",$friends_name_result,$friends_name_kekka,PREG_SET_ORDER);
		$message = preg_replace("@{following_name}@u",$friends_name_kekka[array_rand($friends_name_kekka)][1],$message);
	}
}

へ書き換えて下さい。

これでOAuth認証への切り替えは終了です。お疲れ様でした。テストしてみましょう。
なお"EasyBotterから"の部分を変更したい場合はver.2.0のやり方と変わりませんので、wiki内をみて下さい。