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 )。結果として私が得ているエラーは次のとおりです。

キャッチ可能な致命的なエラー:26行目のOAuth / Twitter / loadJSON.phpで、クラスstdClassのオブジェクトを文字列に変換できませんでした。

26行目は次のとおりです。

echo $contents;

ソースコードでget()関数を確認しましたが、JSON文字列が返されることを期待しているようですが、エラーメッセージからはそうではないか、応答をjson_decodeできない可能性があります。 ?

twitteroauthを使用するのはこれが初めてです。どんな助けでも大歓迎です!ありがとう。

4

1 に答える 1

2

JSON文字列が返されることを期待しているように見えますが、エラーメッセージからはそうではないように見えますか、それとも応答をjson_decodeできませんか?

まったく逆です。

時間の経過とともに失われた何らかの非常識な理由により、 の設計者はjson_decode、ネストされたstdClassのセットを返す必要があると判断しました。マジック メソッドechoを持たないクラスを直接指定することはできません。__toString

データを検査しようとしている場合はvar_dump、任意の PHP データ型を検査できる、 などのより優れたツールを開発する必要があります。

stdClasses を扱うのは少しいらいらし、まとまりがないと感じるかもしれません。trueの 2 番目のパラメーターとして渡すと、json_decode代わりにネストされた配列のセットが返されます。

この特定のケースでは、JSON 文字列を渡したいようです。使用しているライブラリを介してすぐにそれが可能とは思えませんが、旅行中にデータを送信することでうまくいくjson_encodeはずです。

于 2012-12-11T08:09:11.270 に答える