twitteroauth出错,从搜索API中检索推文

时间:2012-12-11 01:10:31

标签: php twitter oauth

我正在尝试使用twitteroauth使用Twitter搜索API检索推文。

这是我的代码:

/* Load required lib files. */
session_start();
require_once('twitteroauth/twitteroauth.php');
require_once('config.php');

/* If access tokens are not available redirect to connect page. */
if (empty($_SESSION['access_token']) || empty($_SESSION['access_token']['oauth_token']) || empty($_SESSION['access_token']['oauth_token_secret'])) {
    header('Location: ./clearsessions.php');
}
/* Get user access tokens out of the session. */
$access_token = $_SESSION['access_token'];

/* Create a TwitterOauth object with consumer/user tokens. */
$connection = new TwitterOAuth(CONSUMER_KEY, CONSUMER_SECRET, $access_token['oauth_token'], $access_token['oauth_token_secret']);

/* If method is set change API call made. Test is called by default. */
$content = $connection->get('account/verify_credentials');

$url = $_GET["url"];
$contents = $connection->get($url);
header ("Content-Type:text/json");
echo $contents;

我正在使用XMLHttpRequest从我的JavaScript调用这个PHP脚本。我已经确认我使用了正确的网址(例如https://api.twitter.com/1.1/search/tweets.json?q=kate)。我得到的错误是:

捕获致命错误:第26行的OAuth / Twitter / loadJSON.php中无法将类stdClass的对象转换为字符串。

第26行是:

echo $contents;

我已经查看了源代码中的get()函数,看起来我应该期待一个JSON字符串,但是从错误消息看起来并非如此,或者它可能无法json_decode响应?

这是我第一次使用twitteroauth;任何帮助将不胜感激!感谢。

1 个答案:

答案 0 :(得分:2)

  

看起来我应该期待一个JSON字符串,但是从错误消息中可能看起来不是这样,或者它可能无法对响应进行json_decode?

恰恰相反。

对于一些失去时间的无聊理由,json_decode的设计者决定它应该返回一组嵌套的stdClass es。如果没有echo magic method,您就不能直接__toString任何课程。

如果您正在尝试检查数据,那么您需要打破一个更好的工具,例如var_dump,它可以检查任何PHP数据类型。

你可能会发现stdClasses有点恼火和脱节。将true作为第二个参数传递给json_decode,它将返回一组嵌套数组。

在这种特定情况下,看起来您希望传递JSON字符串。虽然通过您正在使用的库似乎无法立即实现,但通过json_encode发送数据应该可以解决问题。