5

FBユーザーの写真をいいねで並べ替える必要があります。Facebook JavaScript SDKを介してこのFQLクエリを実行し、次の情報を取得しました。

SELECT object_id, src_big, src_big_width, src_big_height, link, like_info, caption, created 
FROM photo 
WHERE owner = MANY_PICS_USER_ID ORDER BY like_info DESC LIMIT 10

写真が3000枚を超えるユーザーの場合、クエリは失敗します。それらのユーザーがたくさんいることがわかりました。関連するFacebookのバグはこちらhttp://developers.facebook.com/bugs/438568326189781

注:「ORDERBY like_info」を削除するとクエリは機能しますが、いいねで並べ替えてこれらの写真を取得する簡単な方法はありません。

再現するには:
少なくとも3000枚の写真を持つFBフレンドを選び、そのユーザーIDを取得し、API GRAPH EXPLORERで上記のクエリ(MANY_PICS_USER_IDを置き換えます)を実行します。

最善の回避策は何ですか?または、最も簡単な軽量のOpen Graphソリューションを提案できますか?

4

1 に答える 1

2

いいねで写真を並べ替えるには、次のものが必要です。

次のデータ構造を返します。

"data": [
{
  "id": "1234567890", 
  "source": "http://photo.url.in.facebook.cdn.com/", 
  "created_time": "2012-09-13T22:52:34+0000", 
  "likes": {
    "data": [
      {
        "id": "1234567890", 
        "name": "Full Name"
      }, 
      .....
    "paging": {
      "next": "https://graph.facebook.com/1234567890/likes?limit=25&offset=25"
    }
  }
},
{
  "id": "312323232323", 
  "source": "PICTURE_URL", 
  "created_time": "2012-09-12T20:54:27+0000", 
  "likes": {
    "data": [..]
  }
},
....
"paging": {
  "previous": "http://PREVIOUS_URL?fields=id,source,name,height,width,link,likes&limit=100&since=123456", 
  "next": "http://NEXT_URL?fields=id,source,name,height,width,link,likes&limit=100&until=234567"
}
  • 写真の総数が100を超える場合は、「次の」リンクから写真の数が100未満になるまで、次のすべてのクエリを実行します。

  • すべての写真について、いいねの総数を数える必要があります。いいねの数が25を超える場合は、いいねの数が25未満になるまで、likes.paging.nextから追加のクエリを実行して、合計数を取得します。

  • それらすべての写真をいいねの数で並べ替えます。

したがって、3000枚の写真を使用しているユーザーの場合、合計30回の呼び出しと25回以上のいいねを含む各写真の追加の呼び出しになります。

于 2012-10-23T00:45:08.703 に答える