• 締切済み
  • 困ってます

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()); //リクエスト送信。リツイートされる。 } ?>

共感・応援の気持ちを伝えよう!

  • 回答数4
  • 閲覧数336
  • ありがとう数1

みんなの回答

  • 回答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作成 このへんもあやしそう。

共感・感謝の気持ちを伝えよう!

質問者からの補足

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

  • 回答No.2
noname#244856
noname#244856

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

共感・感謝の気持ちを伝えよう!

質問者からの補足

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

  • 回答No.1
noname#244856
noname#244856

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

共感・感謝の気持ちを伝えよう!

関連するQ&A

  • TwitterAPIの検索が使えません。

    TwitterAPIの検索の【GET Search/tweets】の使い方が良くわかりません。 他のはいくつか旨くいった方法で同じように書いているのですが使えないのです。 以下のように書いています。 ==========ここから=========== <?php //twitterAPIライブラリの読み込み require_once('twitteroauth/twitteroauth.php'); //キー $Consumer_key = '*****************'; $Consumer_secret = '*****************'; $Access_token = '*****************'; $Access_token_secret = '*****************'; $conn= new TwitterOAuth($Consumer_key,$Consumer_secret,$Access_token,$Access_token_secret); $para = array('q'=>'test','count'=>'4'); $result=$conn->GET('search/tweets',$para); echo "<pre>"; print_r($result); echo "</pre>"; ?> ==========ここまで=========== するとエラーコード34のエラーが出て取得できません。。。 上記のような書き方で、ツイートするとか指定のIDをフォローするなどは正常に動いているので、キーが違うなどのエラーは無いはずです。 わかる方居ましたらお願いします。

    • ベストアンサー
    • PHP
  • twitterのOAuth認証+xml抽出(php

    こんにちは。 PHPのプログラムで分からない部分があるので質問させてください。 twitterAPIを用いてアカウントの情報のxmlを取得し、simplexmlで解析して ・フォロワー数 ・フォロー数 ・リストされている数 ・ツイート数 ・認証アカウントかどうか といったステータスをsimplexml_load_fileで読み込んで、抽出して変数に入れたいのですが・・・ (この変数に入れたステータスで色々と計算をする予定です) エラーが出てファイルを読み込んでくれません。 ユーザー情報を取得するAPIが認証を通さないといけないため、OAuthを用いて認証しています。 認証が必要のないAPIで返ってきたxmlは問題無くsimplexml_load_fileが使えます。 ちなみにさくらのレンタルサーバーのスタンダードで、PHPのバージョンは5.2.17です。 色々試してみたのですが、何が原因なのか分からないので、ご教授お願いします。 <コード> <?php // twitteroauth.phpを読み込む。 require_once("twitteroauth.php"); // Consumer keyの値 $consumer_key = "******"; // Consumer secretの値 $consumer_secret = "*****"; // Access Tokenの値 $access_token = "******"; // Access Token Secretの値 $access_token_secret = "******"; // OAuthオブジェクト生成 $to = new TwitterOAuth($consumer_key,$consumer_secret,$access_token,$access_token_secret); $req = $to->OAuthRequest("http://api.twitter.com/1/users/show/id.xml","GET",array("user_id"=>"******")); $xml = simplexml_load_file($req) or die("XMLパースエラー"); ?> <実行結果> Warning: simplexml_load_file() [function.simplexml-load-file]: I/O warning : failed to load external entity "<?xml version="1.0" encoding="UTF-8"?> <user> <id>*******</id> <name>******</name> <screen_name>******</screen_name> <location>九州</location> <description>webクリエイ ・・・(以下略)・・・ ;。 &am in /home/*********/www/newfile.php on line 20 XMLパースエラー

    • 締切済み
    • PHP
  • TwitterAPI1.1でGetメソッド(?)の

    perlでフォロワー一覧を取りたいのですがよくわからず困っています。 こちら、 http://pplace.jp/2012/10/1058/ 参考にしてやろうとしているのですが、 使えなくなったとされる1が使えて、1.1のほうがむしろエラーになります。 http://api.twitter.com/1/statuses/followers/TwitterのID.xml → これはOK http://api.twitter.com/1.1/friends/ids.json?screen_name=TwitterのID → エラーになる {"errors":[{"message":"Bad Authentication data","code":215}]} どうやらOauthの失敗とのことですが、、、 簡単なサンプルは動きました。 ---- こちらは確認 つぶやきサンプルです ------------- use strict; use Net::Twitter; my $consumer_key = '' my $consumer_secret = ''; my $token = ''; my $token_secret = ''; my $nt = Net::Twitter->new( traits => [qw/OAuth API::REST/], consumer_key => $consumer_key, consumer_secret => $consumer_secret, access_token => $token, access_token_secret => $token_secret, ); my $result = $nt->update('Hello World'); ----------------------------------------------------- しかし、 そもそも上のようなURL(GETメソッド?)をどうやってOAuthで呼び出すのかがわかりません・・・ perldoc Net::Twitter も見たのですが、それっぽい記述はありませんでした・・・ perlでTwitter1.1のAPIのGetメソッド(?)はどうやって呼び出すのでしょうか・・・

    • ベストアンサー
    • Perl
  • TwitterのAPI制限について

    OAuthを使ってログインしたいと思い色々調べているのですが APIの実行回数の制限についてよく分かりません。 例えば下記のコードでログイン用のURLを取得しています。 TwitterのAPIの制限が1時間に150回となっているのですが 下記のログインURL呼び出しのリクエストはAPI実行回数制限にカウントされるのか? カウントされるのであれば サーバーIP等での実行回数制限になるのか クライアントIP等での実行回数制限になるのか どちらなのでしょうか? サーバーIPでの制限であればまともにサービス展開できませんし 調べてみたのですが確認できませんでした。 ご存知の方がいらっしゃいましたらご教授下さい。 よろしくお願いします。 <? session_start(); require_once("oauth/twitteroauth/twitteroauth.php"); if($_SESSION['oauth_token']===NULL && $_SESSION['oauth_token_secret']===NULL){ $consumer_key = "xxxxxxxxxxxxxxxxxxxxxx"; $consumer_secret = "xxxxxxxxxxxxxxxxxxxxxx"; // OAuthオブジェクト生成 $to = new TwitterOAuth($consumer_key,$consumer_secret); // callbackURLを指定してRequest tokenを取得 $tok = $to->getRequestToken("http://xxxxxxxxx/callback.php"); // セッションに保存 $_SESSION['request_token']=$token=$tok['oauth_token']; $_SESSION['request_token_secret'] = $tok['oauth_token_secret']; // サインインするためのURLを取得 $url = $to->getAuthorizeURL($token); print "<a href=\"$url\">サインイン</a>"; } else{ //サインインしていればヘッダーを出力 include("user_header.php"); } ?>

    • ベストアンサー
    • PHP
  • TwitterのOauth認証プログラムについて

    TwitterのOauth認証プログラムについて 現在、Oauth認証を使って、一般ユーザが認証確認後、 WEBから投稿できるシステムを作ろうとしています。 Oauth_TokenとOauth_Token_Secretは、 $tok = $to->getRequestToken(); で取得されたものを変数として保持して取得しようとしているのですが、 この2つの認証コードと、固有の consumer_keyとconsumer_secretを使用して 認証させ、投稿プログラム $req = $to->OAuthRequest("https://twitter.com/statuses/update.xml","POST",array("status"=> $tweet . " " . $url . " #" . $hash)); を実行させると、なぜか <?xml version="1.0" encoding="UTF-8" ?> - <hash> <request>/statuses/update.xml</request> <error>Could not authenticate you.</error> </hash> つまり、認証されてない状態になってしまいます。 Oauth_TokenとOauth_Token_Secretを取得している場所が間違っているのでしょうか? もしかしてこの2つのコードが逆だったのかもしれないと思い、 逆にして投稿してみたのですが、それでも同じエラー画面に飛んでしまいます。 なぜだか分かる方、いらっしゃいますか?

    • ベストアンサー
    • PHP
  • Twitter Oauth認証がエラーになります。

    現在Twitterログインアプリを作りいのですが、 下記のようなエラーが出てしまいます。 Fatal error: Class 'Codebird' not found in /var/www/html/callback.php on line 8 認証にはcodebird.phpというライブラリを使っております。 (https://github.com/mynetx/codebird-php 下記コードのソースもこちらです。) 分かる方がいらっしゃれば教えて原因を教えて頂けると非常に助かります。 宜しくお願い致します。。 以下仕様 <a href="callback.php">twitterでログイン</a> これをクリックすると、callback.phpに飛び認証が行われるという具合です。 callback.php内ではconfig.phpとcodebird.phpを読み込んでます。 以下callback.phpコード var_dump($me); が実行出来ず、先に記したエラーが起きます。 <?php require_once('config.php'); require_once('codebird.php'); session_start(); Codebird::setConsumerKey(CONSUMER_KEY, CONSUMER_SECRET); //上記の定数はconfig.phpに記載しており、スペルミスはありません。 $cb = Codebird::getInstance(); if (! isset($_GET['oauth_verifier'])) { // gets a request token $reply = $cb->oauth_requestToken(array( 'oauth_callback' => 'http://' . $_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI'] )); // stores it $cb->setToken($reply->oauth_token, $reply->oauth_token_secret); $_SESSION['oauth_token'] = $reply->oauth_token; $_SESSION['oauth_token_secret'] = $reply->oauth_token_secret; // gets the authorize screen URL $auth_url = $cb->oauth_authorize(); header('Location: ' . $auth_url); die(); } else { // gets the access token $cb->setToken($_SESSION['oauth_token'], $_SESSION['oauth_token_secret']); $reply = $cb->oauth_accessToken(array( 'oauth_verifier' => $_GET['oauth_verifier'] )); // $_SESSION['oauth_token'] = $reply->oauth_token; // $_SESSION['oauth_token_secret'] = $reply->oauth_token_secret; $cb->setToken($reply->oauth_token, $reply->oauth_token_secret); $me = $cb->account_verifyCredentials(); var_dump($me); exit; }

    • 締切済み
    • PHP
  • twitterのStreaming apiについて

    PHPとStreamingのGET userを使って 自分のタイムラインのツイートを取得しようと思ったのですが 一度userstreamに接続すると接続しっぱなしになり 最後にはタイムアウトになって終了してしまします うまく回避する方法はないでしょうか? よろしくお願いします <?php // OAuth用ライブラリ「twitteroauth」 require_once 'twitteroauth/twitteroauth.php'; // アプリ登録した際に発行された値を入れて下さい。 $consumer_key = '****************'; $consumer_secret = '********************'; $access_token = '*************************'; $access_token_secret = '*********************'; // オブジェクト生成 $tw_obj = new TwitterOAuth ( $consumer_key, $consumer_secret, $access_token, $access_token_secret); // REST_API指定(今回はタイムラインのREST_API) $tw_rest_api = 'https://userstream.twitter.com/1.1/user.json'; // メソッド指定 $request_method = 'GET'; // オプション指定 $options = array ( 'delimited' => 1950 ); // ユーザータイムライン取得 $tw_obj_request = $tw_obj->OAuthRequest( $tw_rest_api, $request_method, $options); // json形式で取得 $tw_obj_request_json = json_decode($tw_obj_request, true); // 変数生成 $time_line_texts .= ''; // 表示 print($time_line_texts); ?>

    • 締切済み
    • PHP
  • ツイッターAPIについて

    今回私は http://nanapi.jp/11891/ の通りにツイッターアプリを作ることにしました。 開発環境はeclipceです。ここで問題なのは 上記サイトのステップ6のソースコードの18行目の Twitter twitter = factory.getOAuthAuthorizedInstance(CONSUMER_KEY,CONSUMER_SECRET); と39行目の Twitter twitterAct = factory.getOAuthAuthorizedInstance(CONSUMER_KEY,CONSUMER_SECRET, accessToken); にエラーが起きました。 そのエラー内容は「メソッドgetOAuthAuthorizedInstance(String, String, AccessToken)は型 TwitterFactoryで未定義です。」との事でした。上記URLのソースをコピペしただけなのですが何か間違っているのでしょうか?もしかしたら私がeclipce初心者なのでTwitter4Jのパッチの当て方やプロジェクトの作り方そのものが間違っていた可能性もありますが・・・ よろしくお願いします。

  • 0Auth+PHPで初回ユーザならデータベースに

    質問は、初回ユーザならmysqlのデータベースに格納し、初回でなければcallback.phpから../../index.phpにログインしたScreen_nameを表示させたいのですが、どうにもうまくいかず、どなたかご教授して頂けませんでしょうか。 よろしくお願い致します。 <?php session_start(); require_once('twitteroauth.php'); define('CONSUMER_KEY', 'xxxxx'); define('CONSUMER_SECRET', 'xxxxx'); // getToken.php でセットした oauth_token と一致するかチェック if ($_SESSION['oauth_token'] !== $_REQUEST['oauth_token']) { unset($_SESSION); echo '<a href="getToken.php">token不一致。最初からどうぞ</a>'; exit; } // access token 取得 $tw = new TwitterOAuth(CONSUMER_KEY, CONSUMER_SECRET, $_SESSION['oauth_token'], $_SESSION['oauth_token_secret']); $access_token = $tw->getAccessToken($_REQUEST['oauth_verifier']); // Twitter の user_id + screen_name(表示名) $user_id = $access_token['user_id']; $screen_name = $access_token['screen_name']; // 初回ユーザかチェックするロジック ここから分からなくなっています。。。。。。。 mysql_connect ('localhost', 'root', 'xxxx'); mysql_select_db('xxxx'); $user_id = get_current_user_id(); if ($user_id == 0) { $sql = "insert into xxxxx values (user_id char(50), screen_name char(255))"; } else { $user_id=$_POST['user_id']; }

    • ベストアンサー
    • PHP
  • Twitterでリクエストトークン取得時にエラー

    初歩的な質問で申し訳ありません。 色々と修正してみたのですが、どうしても分からなかったので質問させてください。 TwitterのAPIを利用してbotシステムを作っているのですが、 最初の認証画面のところで、リクエストトークンが取得できなくなってしまいました。 昨日までは正常に動いていたのを確認できていたんですが・・・ ********** 【ソース】 require_once '../twitteroauth-master/twitteroauth/twitteroauth.php'; $api_key = 'xxxxxx'; $api_secret = 'xxxxxxxxxx'; // TwitterOAuth認証を作成 $twitter = new TwitterOAuth($api_key, $api_secret); // トークン情報から認証URLを取得 $request_token = $twitter->getRequestToken('http://hoge.jp/callback.php'); $url = $twitter->getAuthorizeURL($request_token, true); // セッションにデータを保存 $_SESSION["token"] = $request_token["oauth_token"]; $_SESSION["token_secret"] = $request_token["oauth_token_secret"]; // 認証ページ表示 header("Location: $url"); ********** ちなみに、TwitterのAPI取得画面で、Callback URLは設定しています。 また、twitteroauth.phpのhttpファンクションの中でcurl_error($ci)を表示させると、 「Problem with the SSL CA cert (path? access rights?)」 というエラーメッセージが表示されました。 なぜいきなりエラーが起こるようになってしまったのか、何か不備があるのであれば教えていただけないでしょうか。 お知恵を貸していただければと思います。 よろしくお願いいたします。

    • ベストアンサー
    • PHP