0

我正在尝试使用 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 脚本。我已经验证我使用的是正确的 URL(例如https://api.twitter.com/1.1/search/tweets.json?q=kate)。结果我得到的错误是:

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

第 26 行是:

echo $contents;

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

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

4

1 回答 1

2

看起来我应该期待返回一个 JSON 字符串,但从错误消息看来情况并非如此,或者它可能无法对响应进行 json_decode?

恰恰相反。

由于一些被时间遗忘的愚蠢原因,设计者json_decode决定它应该返回一组嵌套的stdClass es。如果没有魔术方法,您就不能直接使用echo任何类。__toString

如果您尝试检查数据,您会想要开发一个更好的工具,例如var_dump,它可以检查任何 PHP 数据类型。

您可能会发现 stdClasses 处理起来有点烦人和脱节。true作为第二个参数传递给json_decode,它将返回一组嵌套数组。

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

于 2012-12-11T08:09:11.270 回答