我正在尝试使用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;任何帮助将不胜感激!感谢。
答案 0 :(得分:2)
看起来我应该期待一个JSON字符串,但是从错误消息中可能看起来不是这样,或者它可能无法对响应进行json_decode? p>
恰恰相反。
对于一些失去时间的无聊理由,json_decode
的设计者决定它应该返回一组嵌套的stdClass es。如果没有echo
magic method,您就不能直接__toString
任何课程。
如果您正在尝试检查数据,那么您需要打破一个更好的工具,例如var_dump
,它可以检查任何PHP数据类型。
你可能会发现stdClasses有点恼火和脱节。将true
作为第二个参数传递给json_decode
,它将返回一组嵌套数组。
在这种特定情况下,看起来您希望传递JSON字符串。虽然通过您正在使用的库似乎无法立即实现,但通过json_encode
发送数据应该可以解决问题。