0

私は、顧客のFacebookの写真を使用して仕事をしている会社に疑似ハッシュタグ付けシステムを実装しています。顧客は写真をページにアップロードでき、ページ管理者は写真に製品のハッシュタグを付けることができます。

私がやろうとしているのは、コメントに特定のタグが含まれているページからすべての写真を取得することです(たとえば、「#bluepants」のみを含むコメントを含む会社のページからすべての写真を取得します)。

Facebook APIが手間のかかる作業を処理することを確認しようとしているので(結果をキャッシュします)、FQLまたはGraphs APIを使用したいのですが、機能しないようです(私のSQLはかなりです長い間ORMに依存した後は錆びています)。できるだけ多くの結果を出力したいのですが、FBで一度に25以上の結果が得られるかどうかはわかりません。

これはシナトラサイトで実装される予定です(私は現在コアラの宝石で遊んでいるので、それを使用してクエリできる場合はボーナスポイント)

誰かが私にいくつかのガイダンスを与えることができますか?

ありがとう!

4

1 に答える 1

2

私はこのようなものをFQL/PHPで動作させています。これが私のマルチクエリです。

{'activity':
   "SELECT post_id, created_time FROM stream WHERE source_id = PAGE_ID AND 
      attachment.fb_object_type = 'photo' AND created_time > 1338834720 
      AND comments.count > 0 LIMIT 0, 500",
  'commented': 
    "SELECT post_id, text, fromid FROM comment WHERE post_id IN 
      (SELECT post_id FROM #activity) AND AND (strpos(upper(text), '#HASHTAG') >= 0", 
   'accepted': 
     "SELECT post_id, actor_id, message, attachment, place, created_time, likes 
       FROM stream WHERE post_id IN (SELECT post_id FROM #commented) 
       ORDER BY likes.count DESC", 
   'images': 
     "SELECT pid, src, src_big, src_small, src_width, src_height FROM photo 
        WHERE pid IN (SELECT attachment.media.photo.pid FROM #accepted)",
   'users':
      "SELECT name, uid, current_location, locale FROM user WHERE uid IN 
        (SELECT actor_id FROM #accepted)",
   'pages':
     "SELECT name, page_id FROM page WHERE page_id IN (SELECT actor_id FROM #accepted)",
   'places':
      "SELECT name, page_id, description, display_subtext, latitude, longitude 
         FROM place WHERE page_id IN (SELECT place FROM #accepted)"
 }

これを分解するには:

  • #activityキャンペーンの開始日以降に作成された、写真であり、コメント数がゼロ以外のすべてのストリームオブジェクトを取得します。500のLIMITを使用すると、投稿の最大数が返されるようです。高い値または低い値は、より少ない値を返します。
  • #commented#HASHTAGコメントの1つのテキストにある投稿を検索します。#FQLで予約されている文字であるを探しているわけではないことに注意してください。使用すると問題が発生する場合があります。
  • #accepted#commentedで見つかった投稿の完全な詳細を取得します。
  • #imagesそれらの投稿の画像のすべての詳細を取得します。これをリファクタリングしてobject_id代わりにpid使用し、新しいreal_width仕様を使用してレイアウトを簡単にしてみてください。
  • #users#pagesアイテムを最初に投稿した俳優の詳細を取得します。profileこれで、テーブルを使用して1つのクエリでこれを取得できたことがわかりました。
  • #places地理的にタグ付けされた投稿の場所の詳細を取得します。

あなたはここでこれが実際に動いているのを見ることができます:http://getwellgabby.org/show-us-a-sign

于 2012-09-17T12:40:05.143 に答える