0

私の Web アプリは、Facebook グラフ API へのバッチ リクエストを作成します。バッチは、ユーザーの友達を取得するための最初の API 呼び出しを行うことによって構成されます。次に、友達のリストをループして、それぞれに特定の要求を (そのユーザーの特定のアクセス トークンを使用して) 追加し、それぞれをバッチに追加します。つまり、2 つの API 呼び出しになります。残念ながら、これは非常に遅く、FQL リクエストの方が速いと聞いています。

私の質問は、FQLでこれを行うことができますか? ドキュメントを読みましたが、たとえば、1 つの FQL クエリで友人の仕事履歴 (各友人のアクセス トークンが必要) のすべての友人を返す方法がわかりません。これは可能ですか?もちろん、FQL リクエストのバッチ リクエストを作成することもできますが、それでは元の場所に戻ってしまいます。

更新: いくつかのテストを行ったところ、FQL は間違いなくバッチ リクエストよりも高速であるようです。私の FQL マルチクエリは次のようになります。

$multiQuery = array(
"query1"=>"SELECT uid2 FROM friend WHERE uid1 = me()", //LIST OF FRIEND IDs
"query2"=>"SELECT uid, name, work, education, is_app_user FROM user WHERE uid IN (SELECT uid2 FROM #query1)", //FRIEND PROFILES
"query3"=>"SELECT uid2 FROM friend WHERE uid1 IN (SELECT uid FROM #query2 WHERE is_app_user=1)",
"query4"=>"SELECT uid, name, work, education FROM user WHERE uid IN (SELECT uid2 FROM #query3)"
);

$multiQueryResult = $facebook->api(array(
'method'   => 'fql.multiquery',
'queries'  => $multiQuery
));

var_dump( $multiQueryResult );

クエリは機能しますが、2 つの問題があります。

  1. query3 は、アプリを承認したユーザー ID だけでなく、すべてのユーザー ID を返します。

  2. query4 は仕事/教育フィールドを返しません...おそらく API リクエストが現在のユーザーのアクセス トークンで呼び出されているためです (query3 の特定のユーザーのアクセス トークンとは対照的です)。承認されたユーザーのアクセス トークンを DB に保存しましたが、このコンテキストでそれらを使用できるかどうかはわかりません。

これはFQLで行うことができますか?? FQL マルチクエリ内で一意のアクセス トークンを定義できますか?

4

2 に答える 2

0

質問がないように見えるので、これは私の最初の質問に対する答えではありません。これを書いている時点では、Facebookのバッチリクエストは本当に遅いようです...それは基本的にその目的全体を無効にするので、これは残念です。

于 2012-06-24T18:56:08.180 に答える
0

友達の仕事履歴のすべての友達 (これには、各友達のアクセス トークンが必要です)

異なるアクセス トークンが必要な場合、1 回のリクエストでそれを行う方法がないことは明らかです。しかし、友人が最近あなたのアプリを操作していない場合、友人のアクセス トークンをどこで取得しますか? もしそうなら、あなたはすでに彼らの仕事情報を取得して自分のデータベースに入れておくことができたので、私の友人の uid を検索に使用するだけでそこから取得できました。そうでなければ、これはあなたの進むべき道ではないと思います。

むしろこのようになりたい:

ユーザーの友人が、ユーザーが使用しているアプリと自分の仕事情報を共有することをいとわないようにプライバシー設定をセットアップしている場合、それらの友人ごとに個別のアクセス トークンを必要とせずにその情報を取得できます。次に、次のような FQL クエリを実行します。

SELECT uid, name, work FROM user WHERE uid IN
  (SELECT uid1 FROM friend WHERE uid2 = me())

これにより、ユーザーの友人の仕事情報が得られますが、明らかに、その情報を友人が使用しているアプリと共有することをいとわない人に限られます.

于 2012-06-16T11:37:37.133 に答える