• 締切済み

twitterのbotが動かなくなりました。

twitterのbotがtwitterAPI1.1へのバージョンアップで動かなくなりました。 当方素人なため、最初製作した時もググりながらでしたのでさっぱりわかりません。 コードを書き直す以外にも何かやらなければならないのでしょうか? 下記以外にもファイルがありますが他にも修正しなければいけないのでしょうか? 易しく教えていただけると助かります。 ↓↓↓bot.phpのコードです↓↓↓ #!/usr/local/bin/php <?php require_once ("./oauth/twitteroauth.php"); //インクルードパスを基準に書いたら何故かコマンドラインからの実行でrequrireされなかったのでこのように相対パスを記述 //以下は、上記URLから取得した内容をコピペ $consumer_key = '**************'; $consumer_secret = '*******************'; $access_token = '***************'; $access_token_secret = '**********************'; //リクエストURL作成、XML取得。ここでは5件取得するよう記述 $keyword = urlencode('**'); $url = "http://search.twitter.com/search.atom?q=".$keyword."&rpp=5"; $xml = simplexml_load_file($url); //for文で5件をリツイート for($i=5;$i>0;$i--){ $id = $xml->entry[$i]->id; //それぞれのつぶやきからidを取得 $id = str_replace('tag:search.twitter.com,2005:','',$id); //使うidの部分だけ抜き取る $endpoint = "http://api.twitter.com/1/statuses/retweet/".$id.".xml"; //エンドポイントURL作成 $to = new TwitterOAuth($consumer_key,$consumer_secret,$access_token,$access_token_secret); //twitteroauthクラスのインスタンス生成。 $req = $to->OAuthRequest($endpoint,'POST',array()); //リクエスト送信。リツイートされる。 } ?>

みんなの回答

回答No.4

当方で動作確認をしていますが、環境によっては動かない可能性もあります。 ---------- ここから ---------- #!/usr/local/bin/php <?php require_once ("./oauth/twitteroauth.php"); //インクルードパスを基準に書いたら何故かコマンドラインからの実行でrequrireされなかったのでこのように相対パスを記述 //以下は、上記URLから取得した内容をコピペ $consumer_key = '**************'; $consumer_secret = '*******************'; $access_token = '***************'; $access_token_secret = '**********************'; /* ここから変更 */ // OAuthオブジェクト生成 $to = new TwitterOAuth($consumer_key,$consumer_secret,$access_token,$access_token_secret); // 設定 $keyword = "example"; // 検索キーワード $count = 5; // 取得する件数 // 検索実行 $search = $to->get("https://api.twitter.com/1.1/search/tweets.json",array("q"=>urlencode($keyword),"count"=>$count)); // リツイート実行 foreach ($search->statuses as $status){ $req = $to->post("https://api.twitter.com/1.1/statuses/retweet/".$status->id_str.".json",array()); } /* ここまで変更 */ ?> ---------- ここまで ---------- 主な変更としては、 ・エンドポイントをjsonに変更(APIv1.1ではjsonしかサポートされない) ・IDの取り出し方法を変更 ・リツイートループの変更 となります。 「// 設定」の後ろにある変数の内容を書き換えれば件数とキーワードを変更できます。 【使用したAPIについて】 GET search/tweets https://dev.twitter.com/docs/api/1.1/get/search/tweets v1.1では他のタイムライン系と同じ形式で返って来るようになりました。 POST statuses/retweet/:id https://dev.twitter.com/docs/api/1.1/post/statuses/retweet/:id

すると、全ての回答が全文表示されます。
回答No.3

ざーーーーーーーーーっとしかコードをみてませんので、 あてずっぽですが、 1.1からは確かXMLは使えなくなったと思います。 $endpoint = "http://api.twitter.com/1/statuses/retweet/".$id.".xml"; //エンドポイントURL作成 このへんもあやしそう。

dossari
質問者

補足

ありがとうございます。 でも、どうやればいいのですか?? 素人には荷が重いのでしょうか。。。

すると、全ての回答が全文表示されます。
noname#244856
noname#244856
回答No.2

【訂正】 エンドポイントに $endpoint = "http://api.twitter.com/1/statuses/retweet/".$id.".xml"; //エンドポイントURL作成 などと直接フルURLを指定する場合はそこのバージョンを全部「1」から「1.1」に書き換えるように。 SSL(https://)は必須。

dossari
質問者

補足

ありがとうございます。、、、が、やってみましたがやっぱり動きません。 さっぱりです。。。

すると、全ての回答が全文表示されます。
noname#244856
noname#244856
回答No.1

twitteroauthの頭のほうの public $host = "https://api.twitter.com/1/"; を public $host = "https://api.twitter.com/1.1/"; に変えるだけ

すると、全ての回答が全文表示されます。

専門家に質問してみよう