3

ユーザーにタイムラインを提供したいfbアプリを開発していますが、「ユーザーが写真を気に入った」、「友達の写真へのコメント」などのストーリーを除外する必要があります。これらのタイプのストーリーをフィルタリングして除外する方法

4

3 に答える 3

1

fql を使用します。説明が「A は B をフォローしました」、「A は Intel が好きです。」、「A は自分のリンクにコメントしました。」などの場合、「type」フィールドは「null」です。

SELECT created_time,description,likes,message,post_id FROM stream WHERE source_id=me() AND type!="" AND created_time<=now() LIMIT 50 

更新: クエリがページ ストーリーの投稿を除外していないことがわかりました。Anvesh Saxena の回答は私の回答よりも正しいです。

source_id=me() AND filter_key in のストリームからメッセージを選択 (uid=me() の stream_filter から filter_key を選択)

2013 年 5 月 15 日水曜日の更新: 別の filter_key が同じ post_id を保持している可能性があるため、問題が発生しているようです。たとえば、「nf」filter_key と Links filter_key「app_2309869772」の両方にリンクが表示される場合があります。 ここに画像の説明を入力

更新:私はいくつかの調査を行い、最終的にこのクエリを出しました(2つの「me()」を他のuser_idに置き換えても機能します):

SELECT viewer_id, app_id, target_id, post_id, created_time, message, type, permalink FROM stream WHERE source_id=me() AND created_time<=now() AND ((type IN(46,80,128,237,247)) OR (type="" AND target_id =me())) LIMIT 150

この FQL API クエリは Web ブラウザーと比較されます (私は自分のウォールで [すべての記事] をクリックしてテストしました):

アドバンテージ:

  • 短期間に作成されたすべての重複フィードが含まれます。Web ブラウザー バージョンでは、この重複したフィードが除外される場合があります。

不利益:

  • 「誰かによってタグ付けされた」は含まれません (ソース ID が me() ではないため理にかなっています。また、パフォーマンス上の懸念から、すべての友人にクエリを実行して me() IN(tagged_ids) でフィルタリングする意味はありません)
  • 「カバー写真の更新」と「プロフィール写真の更新」フィードは含まれません。
  • モバイル経由のユーザーの投稿が、特定の post_id であってもストリーム テーブルから返されない場合があることがわかりました。
  • "(type="" AND target_id=me())" は、友達があなたのタイムラインで写真やリンクを共有している場合は機能しません。友人が共有したステータスは作品です。

誰かがより良いクエリを持っている場合は、親切にお知らせください

乾杯

于 2013-05-10T11:59:24.330 に答える