4

この FQL マルチクエリを使用して、友達が好きなページを取得しようとしています。

{
    "query1": "SELECT uid2 FROM friend WHERE uid1 = me()",
    "query2": "SELECT uid, page_id, type FROM page_fan WHERE uid IN (SELECT uid2 FROM #query1)",
    "query3": "SELECT page_id, name, categories, type, page_url, pic_big FROM page WHERE page_id IN (SELECT page_id FROM #query2)"
}​

クエリは正常に機能し、結果が返されます。ただし、260 人のユーザーに対して約 2940 ページが返されます。これは、クエリされたユーザーの実際のいいね数の合計よりもはるかに少ない値です。

私はそれがパーミッションの問題である可能性があると考え、このリストに載っている人のうちの 1 人に、友人のアプリケーションの「いいねや興味へのアクセス...」パーミッションを削除するよう依頼しました。次の実行では、返された JSON に彼女のページといいね! は含まれていませんでしたが、ページ数は実際には 10 ~ 20 レコード増加しました。

ここで何か間違ったことをしていますか?パフォーマンス上の理由からマルチクエリを使用しています。

これは、Graph API エクスプローラーと PHP SDK の両方を使用して発生します。

$fql = urlencode($fqlQuery);
$response = $facebook->api("/fql?q={$fql}");

この問題について何か考えはありますか?

前もって感謝します :)

4

1 に答える 1

3

Facebookには、特定の人から受け取る結果を制限する可能性のある追加のプライバシー機能があります。

設定はプライバシー設定にあり、その名前は- ユーザーが使用するアプリにあなたの情報をどのように提供するか

また、簡単な説明もあります-

あなたの情報を見ることができる人は、アプリを使用するときにそれを持っていくことができます。この設定を使用して、ユーザーが持ち込める情報のカテゴリを制御します。

その設定内のオプションの1つはです"Activities, interests, things I like"私のプロファイルでは、このオプションはオフに設定されています。したがって、アプリケーションが私の友人からどのような権限を取得しても、そのアプリケーションは私の「いいね」を見ることができません。

私の疑いは、あなたの(賢い)ユーザーの何人かが私のようにこの設定を無効にしていて、それがあなたのアプリケーションがその情報にアクセスするのを妨げているということです。

余談ですが、この設定はソーシャルネットワークの本当のプライバシーにとって非常に重要だと思います。友達が私の好きなページを見ることができるからといって、友達が使っているアプリケーションもその情報を見ることができるようにしたいという意味ではありません。

于 2012-07-07T11:59:06.543 に答える