1

Graph API の一部の受信トレイ メッセージには、コメント配列がありません。コメントは、スレッド内の実際のメッセージです。API ユーザーはこれらのメッセージを利用できないのでしょうか?

例:

{
    "unread": 0,
    "to": {
        "data": [
            {
                "id": "666397291",
                "name": "Miguel Paraz"
            },
            {
                "id": "xxxxxx",
                "name": "xxxxxx"
            }
        ]
    },
    "id": "56002435955",
    "updated_time": "2013-01-19T06:33:59+0000",
    "unseen": 0
}

Facebook Web サイトまたはモバイル アプリで受信トレイを開くと、コメントが表示されます。

このスレッドを具体的に取得しようとすると、次のようになります。

{
  "error": {
    "message": "Unsupported get request.",
    "type": "GraphMethodException",
    "code": 100
  }
}
4

1 に答える 1

2

私は同じ問題を抱えていましたが、これを解決する唯一の方法は、Graph API の代わりに FQL マルチクエリを使用することでした。このクエリの使用:

    {
    'messages': 'SELECT body,created_time, author_id  FROM message WHERE thread_id IN 
    (SELECT thread_id FROM thread WHERE folder_id = 0) and author_id != me() ORDER BY created_time DESC',
    'names': 'SELECT uid, name FROM user WHERE uid IN (SELECT author_id FROM #messages)' 
    }

次のような結果を返します。

    {
      "data": [
        {
          "name": "messages", 
          "fql_result_set": [
            {
              "body": "body of message", 
              "created_time": 1344741084, 
              "author_id": 0
            },...
          ]
        }, 
        {
          "name": "names", 
          "fql_result_set": [
            {
              "uid": "id of user from first query", 
              "name": "user_name"
            },...
          ]
        }
      ]
    }

次に、最初に2番目のクエリの結果をハッシュマップに解析し、この後、最初のクエリの結果をデータ構造に解析し、author_idをハッシュマップの名前に置き換えます。

ユーザーまたはメッセージに関する追加情報が必要な場合は、クエリの SELECT ステートメントに列を追加するだけです。

お役に立てれば。

于 2013-03-13T12:13:32.383 に答える