TwitterOAuthのインスタンスでget()した結果をjson_decode()しようとしたら expects parameter 1 to be string, array given in ...


TwitterOAuth のインスタンスでget()した結果を json_decode() しようとしたら expects parameter 1 to be string, array given in ...

※2015/11/29記事修正

5年前のサンプルプログラムを動かそうとして、中途半端に修正してました。

<旧コード>

(省略)
//自アカウントのタイムラインを取得するメソッド
function GetMyTimeline($count = 30) {
  $opt = array();
  $opt['count'] = $count;
  //$sidはツイート、リプライの発言ID
  if($sid){$opt['since_id'] = null;}
  $req = $this->Obj->OAuthRequest("http://api.twitter.com/1/statuses/home_timeline", "GET", $opt);
  //jsonをPHP配列に変換
  if($req) {$result = json_decode($req);} else {$result = null;}
  //エラー処理
  if(!is_array($result)) {die('Error');}
  //配列を逆順にして返す
  return array_reverse($result);
}
(省略)

OAuthRequest()メソッドからget()メソッドに変更したのですが、結果をjson_decode()するところで表記のエラー。返り値はすでにPHP配列なのでデコードする必要はなかったのでした。



<新コード>

(省略)
//自アカウントのタイムラインを取得するメソッド
function GetMyTimeline($count = 30) {
  $opt = array();
  $opt['count'] = $count;
  //$sidはツイート、リプライの発言ID
  if($sid){$opt['since_id'] = null;}
  $req = $this->Obj->get("statuses/home_timeline", $opt);
  //PHP配列が返り値なのでjson_decodeは不要
  //エラー処理
  if(!is_array($req)) {die('Error');}
  //配列を逆順にして返す
  return array_reverse($req);
}
(省略)
以下は参考まで。

<環境>
Windows10
xampp-win32-5.6.14-4-VC11
PHP 5.6.14

<composer.json>
{
  "require":{
  "php":">=5.5.0",
  "abraham/twitteroauth":"0.6.2"
  }
}

<TwitterOAuthインスタンス生成部分>

(省略)
$this->Obj = new TwitterOAuth($consumer_key, $consumer_secret, $oauth_token, $oauth_token_secret);
$this->Obj->host = 'https://api.twitter.com/1.1/';
(省略)

0 件のコメント:

コメントを投稿