0

同じアプリを使用している友人間で共有されている好きなものを何らかの方法で取得する必要があります。最終的に最も一般的な好きなもののリストを返す FQL を取得する必要があります。それは可能ですか?

ありがとう。

4

1 に答える 1

0

私はこれを見て、現在のユーザーのいいね! をインデックス可能な user_id フィールドに基づいて取得するには、現在のユーザーの user_access トークンが必要です。

https://developers.facebook.com/docs/reference/fql/like/

これが基本的に意味することは、特定の時点でのアプリの現在のユーザーのみが、好みに基づいて情報を照会できるということです。次のクエリのようなものがうまくいくかもしれません。read_stream 権限が必要であることに注意してください

select object_id, user_id,object_type FROM like WHERE object_id in(SELECT object_id FROM like WHERE user_id =me()) and user_id in(select uid FROM user WHERE uid in(SELECT uid2 FROM friend where uid1 = me()) and is_app_user='true')

あなたはでこれを試すことができます

https://developers.facebook.com/tools/explorer/433871385166/?fql=select%20object_id%2C%20user_id%2Cobject_type%20FROM%20like%20WHERE%20object_id%20in(SELECT%20object_id%20FROM%20like%20WHERE%20user_id%20%3Dme())%20and%20user_id%20in(select%20uid%20FROM%20user%20WHERE%20uid%20in(SELECT%20uid2%20FROM%20friend%20where%20uid1%20%3D%20me())%20and%20is_app_user%3D'true')

次に、サーバー側のコードを使用して、返されたデータを分析し、最も人気のあるデータをカウントする必要があります。おそらく配列を作成し、データをループして、object_id に基づいて配列にキーがあるかどうかを確認し、ない場合はそのキーを値 1 (1 はカウント) で配列に追加します。値を 1 ずつ。

擬似コードの例

  $data; // This would be what was returned from your FQL query
  $compare = array();
  foreach($data as $value){
    if(array_key_exists($value['object_id'],$compare)){
       $compare['object_id'] = $value['object_id'] + 1;
    }else{
       $compare['object_id'] = 1;
    }
  }
  // Do some sorting function to compare the counts.
  //you would then probably need to batch queries to get the name/title of the object that the user has liked

これが良い出発点になることを願っています

于 2012-08-08T16:26:18.373 に答える