reply_random.phpにOAuth認証を導入する
Basic認証が6月で非推奨になるという話の影響か、最近Twitter内でもOAuth認証の導入を検討するBOT製作者さんが増えてきた印象です。
私も投稿元の名前をいじってみたくなってぼちぼち導入していますので、成功したやり方を参考までに置いておきます。
基本的なOAuthの導入方法はtwitterのbotなどでOAuthを使う方法(PHPバージョン)を参考にさせていただきましたので、まずはリンク先を参考に、OAuth認証で投稿させるところまで漕ぎつけてください。
ちなみにこの時点で、land.toサーバーをいじらずに使っている方は手詰まりになると思います。
Fatal error: Call to undefined function curl_init()〜
というエラーが出るはずです。サーバーのほうでcURLが有効になっていないのが原因のようなのですが、これを解決する方法は現状私の方では見つけられていません。ぐーぐる先生を頼りながらphp.iniを手探りでいじってはいるのですが…。
@PAGESあたりならするりと動くはずですのでこちらを借りなおすなりland.toの設定をいじるなり、自分なりの解決策を見つけていただくほかありません。
以下、OAuth認証での投稿に辿り着いたことを前提に話を進めます。
OAuth認証部分はリンク先のtoukou.php(テスト投稿用スクリプト)からのコピペが主ですが、API呼び出し部分のアドレスなどはphaさんの仕様にあわせて若干改変してあります。
私の環境でこの改変スクリプトはしっかり動いてはいますが、一応現在動かしているreply_random.phpのバックアップはとっておいてくださいね。何かあった後では遅いです。ほんとに。
OAuth認証は基本部分の設定が若干手間ですが一度やってしまえば流れはもうわかると思いますので、bot用のテストアカウントがある方は面倒くさがらずにそちらの準備もして、まずはそちらのアカウントで動作テストをしましょう。いきなり本IDでcronかませたスクリプトとすりかえるのとこっそりテストするのでは、万一エラー吐いたときの焦り度が段違いです。
下準備が出来たらreply_randomが置いてあるフォルダの中にOAuth.phpとtwitterOAuth.phpを放り込んでください。
まずはキーのコピペとAPI呼び出し部分の書き換えをしましょう。
phaさんのスクリプトのこの部分
$username = "Twitterのユーザー名"; //Twitterのユーザー名を書き込んでください
$password = "Twitterのパスワード"; //Twitterのパスワードを書き込んでください
ここの$passwordの行を削除します。$usernameも認証には使わないので削除して構わないのですが、投稿結果表示の
Twitterへの投稿に成功しました。
{$username}に投稿したメッセージ:{$message}
という部分で微妙に使っているので残しておいてもいいと思います。
次に、スクリプト45行目前後に
chdir(dirname(__FILE__));
require_once("Services/Twitter.php");
require_once('Services/Twitter/Jsphon/Error.php');
require_once("Services/Twitter/Jsphon/Decoder.php");
という部分があると思います。この真下に
$st =& new Services_Twitter($username, $password);
$replydata = $st->getReplies();
という部分があります。この2行を削除(消すのに抵抗があるなら//でコメントアウトしても構いません)してください。そうしたら、ここに
require_once("twitterOAuth.php");
//Consumer keyの値
$consumer_key = "Consumer_key";
//Consumer secretの値
$consumer_secret = "consumer_secret";
//Access Tokenの値
$access_token = "access_token";
//Access Token Secretの値
$access_token_secret = "access_token_secret";
//OAuthオブジェクト生成
$to = new TwitterOAuth($consumer_key,$consumer_secret,$access_token,$access_token_secret);
$replydata = $to->OAuthRequest('http://twitter.com/statuses/replies.json', array(), 'GET');
までを貼り付けてください。赤字部分はそれぞれ、対応するキーに書き換えてくださいね。
ここのコピペはもしかしたらもっと上の設定部分に置いてもいいのかもしれませんが、同じ処理をするところに置き換えた方が個人的にスッキリするのでここに置きました。まぁ動けばいいんです動けば。こまけぇこたぁ(ry
これでファイル呼び出し部分の置き換えは終了です。
あとは投稿部分の書き換えです。スクリプトをぐ〜っと下にスクロールしていくと
//投稿する
$in_reply_to_status_id = $replies2[$i]["id"];
$result = $st->setUpdate(array('status'=>$message,'in_reply_to_status_id'=>$in_reply_to_status_id));
という部分があります。この$resultの行を削除(orコメントアウト)したら、ここに
$req = $to->OAuthRequest("https://twitter.com/statuses/update.xml",array("status"=>$message,'in_reply_to_status_id'=>$in_reply_to_status_id),"POST");
を貼り付けます。
スクリプトの動きに関わる改変はこれでおしまいです。が、せっかく結果表示機能をつけてくださっているのでこれもちゃんと有効になるよう書き換えておきましょう。
今コピペした部分の真下に
if($result){
という行がありますので$resultを$reqに書き換えてください。または、先ほどコピペした行先頭の$reqを$resultに書き換えても大丈夫だと思います。この二つの関数が同じ名前ならオッケーです。
書き換えは以上です。あとは保存してアップロードして動作させてみてください。
私も投稿元の名前をいじってみたくなってぼちぼち導入していますので、成功したやり方を参考までに置いておきます。
基本的なOAuthの導入方法はtwitterのbotなどでOAuthを使う方法(PHPバージョン)を参考にさせていただきましたので、まずはリンク先を参考に、OAuth認証で投稿させるところまで漕ぎつけてください。
ちなみにこの時点で、land.toサーバーをいじらずに使っている方は手詰まりになると思います。
Fatal error: Call to undefined function curl_init()〜
というエラーが出るはずです。サーバーのほうでcURLが有効になっていないのが原因のようなのですが、これを解決する方法は現状私の方では見つけられていません。ぐーぐる先生を頼りながらphp.iniを手探りでいじってはいるのですが…。
@PAGESあたりならするりと動くはずですのでこちらを借りなおすなりland.toの設定をいじるなり、自分なりの解決策を見つけていただくほかありません。
以下、OAuth認証での投稿に辿り着いたことを前提に話を進めます。
OAuth認証部分はリンク先のtoukou.php(テスト投稿用スクリプト)からのコピペが主ですが、API呼び出し部分のアドレスなどはphaさんの仕様にあわせて若干改変してあります。
私の環境でこの改変スクリプトはしっかり動いてはいますが、一応現在動かしているreply_random.phpのバックアップはとっておいてくださいね。何かあった後では遅いです。ほんとに。
OAuth認証は基本部分の設定が若干手間ですが一度やってしまえば流れはもうわかると思いますので、bot用のテストアカウントがある方は面倒くさがらずにそちらの準備もして、まずはそちらのアカウントで動作テストをしましょう。いきなり本IDでcronかませたスクリプトとすりかえるのとこっそりテストするのでは、万一エラー吐いたときの焦り度が段違いです。
下準備が出来たらreply_randomが置いてあるフォルダの中にOAuth.phpとtwitterOAuth.phpを放り込んでください。
まずはキーのコピペとAPI呼び出し部分の書き換えをしましょう。
phaさんのスクリプトのこの部分
$username = "Twitterのユーザー名"; //Twitterのユーザー名を書き込んでください
$password = "Twitterのパスワード"; //Twitterのパスワードを書き込んでください
ここの$passwordの行を削除します。$usernameも認証には使わないので削除して構わないのですが、投稿結果表示の
Twitterへの投稿に成功しました。
{$username}に投稿したメッセージ:{$message}
という部分で微妙に使っているので残しておいてもいいと思います。
次に、スクリプト45行目前後に
chdir(dirname(__FILE__));
require_once("Services/Twitter.php");
require_once('Services/Twitter/Jsphon/Error.php');
require_once("Services/Twitter/Jsphon/Decoder.php");
という部分があると思います。この真下に
$st =& new Services_Twitter($username, $password);
$replydata = $st->getReplies();
という部分があります。この2行を削除(消すのに抵抗があるなら//でコメントアウトしても構いません)してください。そうしたら、ここに
require_once("twitterOAuth.php");
//Consumer keyの値
$consumer_key = "Consumer_key";
//Consumer secretの値
$consumer_secret = "consumer_secret";
//Access Tokenの値
$access_token = "access_token";
//Access Token Secretの値
$access_token_secret = "access_token_secret";
//OAuthオブジェクト生成
$to = new TwitterOAuth($consumer_key,$consumer_secret,$access_token,$access_token_secret);
$replydata = $to->OAuthRequest('http://twitter.com/statuses/replies.json', array(), 'GET');
までを貼り付けてください。赤字部分はそれぞれ、対応するキーに書き換えてくださいね。
ここのコピペはもしかしたらもっと上の設定部分に置いてもいいのかもしれませんが、同じ処理をするところに置き換えた方が個人的にスッキリするのでここに置きました。まぁ動けばいいんです動けば。こまけぇこたぁ(ry
これでファイル呼び出し部分の置き換えは終了です。
あとは投稿部分の書き換えです。スクリプトをぐ〜っと下にスクロールしていくと
//投稿する
$in_reply_to_status_id = $replies2[$i]["id"];
$result = $st->setUpdate(array('status'=>$message,'in_reply_to_status_id'=>$in_reply_to_status_id));
という部分があります。この$resultの行を削除(orコメントアウト)したら、ここに
$req = $to->OAuthRequest("https://twitter.com/statuses/update.xml",array("status"=>$message,'in_reply_to_status_id'=>$in_reply_to_status_id),"POST");
を貼り付けます。
スクリプトの動きに関わる改変はこれでおしまいです。が、せっかく結果表示機能をつけてくださっているのでこれもちゃんと有効になるよう書き換えておきましょう。
今コピペした部分の真下に
if($result){
という行がありますので$resultを$reqに書き換えてください。または、先ほどコピペした行先頭の$reqを$resultに書き換えても大丈夫だと思います。この二つの関数が同じ名前ならオッケーです。
書き換えは以上です。あとは保存してアップロードして動作させてみてください。



