0

Facebook で友達が作成したすべてのイベントの数を表示する Facebook アプリがあります。FQL を使用して数値を返します。2 月 1 日までは問題なく動作していましたが、今月のローリングの変更により動作を停止したと思われますが、ドキュメントで FQL プロトコルに関する情報を見つけることができませんでした。以前に機能していたものは次のとおりです。

$timestamp = time(); // Get current Unix time
$iso8601 = date('c', $timestamp); // Convert unix time to ISO8601

// FQL Multiquery
$fql_query = '{"allFriends":"SELECT+uid2+FROM+friend+WHERE+uid1=me()",' 
          .'"allEvents":"SELECT+eid+FROM+event_member+WHERE+uid+IN+(SELECT+uid2+FROM+#allFriends)+AND+start_time>=\''.$iso8601.'\'",'
          .'"creators":"SELECT+creator+FROM+event+WHERE+eid+IN+(SELECT+eid+FROM+#allEvents)"}'
          . '&access_token=' . $access_token;
// Get FQL through Graph API call
    $fql = $facebook->api('/fql?q=' . $fql_query);

しかし、スクリプトを実行すると、次の例外が発生します。

FacebookApiException: OAuthException: (#601) パーサー エラー: 予期しない '{' at position 0.

修正するには何を変更すればよいですか?

どんな助けでも大歓迎です

4

2 に答える 2

0

質問のマルチクエリを修正する方法がわかりませんでしたが、誰かが同じ問題を抱えている場合は回避策を試しました。2 つの別々の fql 呼び出しを行う必要があり、その出力を使用してタスクを完了しました。コードは次のとおりです。

$timestamp = time(); // Get current Unix time
$iso8601 = date('c', $timestamp); // Convert unix time to ISO8601

// FQL Queries
//Select Events created by user's Friends
$fql_query = 'SELECT+creator+FROM+event+WHERE+eid+IN+' .
'(SELECT+eid+FROM+event_member+WHERE+start_time>=\'' . 
$iso8601.'\'+AND+uid+IN+(SELECT+uid2+FROM+friend+WHERE+uid1=me()))' . 
&access_token=' . $access_token;

$fql = $facebook->api('/fql?q=' . $fql_query);

// Get friend_count from user table 
$fql_query2 = 'SELECT+friend_count+FROM+user+WHERE+uid=me()' . 
&access_token=' . $access_token;

$fql2 = $facebook->api('/fql?q=' . $fql_query2);

私はそれがあまり効率的ではなく、間違いなく醜いことを知っているので、誰かが私の元の問題を解決する方法を持っているなら、私は喜んでその答えを受け入れます.

ロバート

于 2013-02-10T14:01:07.673 に答える