0

PHPとOpenGraph/FQLリクエストを使用して(Facebook SDKを使用していません)、FBのCommentSocialPluginを介して自分のWebサイトで行われたコメントをフェッチするための優れたアプローチを設定しました。

相対的なiOSアプリでコメントを表示するために必要でした。実際、このメソッドはすべてのコメントを取得し、関連する回答が存在する場合はそれと、コメントを作成したユーザーに関するユーザー名/写真を取得します。

問題は、別のプロバイダーと署名したユーザーによるコメントにあります。FQLの結果は次のとおりです。

  "fromid": XXXXXXXXXXXXXXX,          //first ID, usually is uid in "user" table
  "text": "comment text", 
  "time": 1345979042, 
  "comments": {
    "data": [
      {
        "id": "YYYYYYYYYYYYYYYYYY",   //not relevant, URL id
        "from": {
          "name": "externaluser", 
          "id": ZZZZZZZZZZZZZZZ      //another ID, usually uid too, different from XXXXX 
        }, 
        "message": "test reply", 
        "created_time": 1345979528
      }
    ], 
    "count": 1
  }

この結果はコメントテキストを正しく提供しますが、IDはユーザーテーブルに存在しません。「reply」は「externaluser」という名前を正しく返しますが、FQLテーブルをクエリしている場所でそれを見つけることができません。

この外部ユーザーはFacebookDBのどこかに保存されていると確信しています。誰かがユーザーのデータを取得するための正しい関係を教えてもらえますか?

ありがとうございました。

4

2 に答える 2

0

このFQLを試すことができます:

SELECT id, name, username FROM user WHERE third_party_id = ZZZZZZZZZZZZZZZ

それでもユーザーに理解できない場合は、FBサーバーからその詳細を取得することはできないと思います。

于 2012-08-26T13:23:22.330 に答える
0

私たちは同じ問題に遭遇し、最終的にコメントを作成している人々の名前を提供する FQL クエリを見つけました。ストリームからデータを取得するとき、実際には 2 組の名前が必要でした。ストリームに投稿する人の名前とコメント投稿者の名前です。データを取得するには、トリプル クエリが必要でした。かなり大きなクエリなので、関連するフィールドだけに切り詰めました。

{"q1":"SELECT source_id, likes, comments, actor_id,  post_id FROM stream WHERE filter_key IN ( SELECT filter_key FROM stream_filter WHERE uid = me())",
 "q2":"SELECT id, username, name FROM profile WHERE id IN (SELECT actor_id FROM #q1)",
 "q3":"SELECT id,name,username FROM profile WHERE id IN (SELECT fromid FROM comment WHERE post_id IN (SELECT post_id FROM #q1))"}

クエリ 1 は、ストリームからアイテムを取得します。クエリ 2 は、ストリームに投稿したユーザーの情報を提供します。q1のactor_idからq1のidへの相互参照を行う必要があります。クエリ 3 は、q1 で返されたものにコメントした人の情報を提供します。q1.comments.comment_list の formid から q1 の id への相互参照を行う必要があります。

お役に立てれば。

于 2013-03-05T14:53:19.503 に答える