1

如何使用 facebook fql 获取消息未知收件人的电子邮件或姓名而不是 0?

我写了一些 php 代码来导出我的 facebook 邮箱中的消息。我正在使用 FQL。

这是我在API 工具资源管理器中使用的 flq 多查询,用于获取给定消息,包含完整的消息和收件人数据。

{
"threads": "SELECT thread_id FROM thread WHERE folder_id IN (0,1,4)",
"messages": "SELECT thread_id, message_id, author_id, created_time, body FROM message where thread_id IN (SELECT thread_id FROM #threads) and message_id='249...' ORDER BY created_time ASC",
"recipients_id": "SELECT thread_id,recipients FROM thread WHERE thread_id IN (SELECT thread_id FROM #messages)",
"recipients": "SELECT uid, username, name, email, profile_url, pic FROM user WHERE uid IN (SELECT recipients FROM #recipients_id)"
}

这是我得到的:

{
    "name": "recipients_id",
    “fql_result_set”:[
      {
        "thread_id": "26854010378569",
        “收件人”:[
          4735804651,
          0,
          0
        ]
      }
    ]
}

正如我之前从经典电子邮件客户端将这条测试消息发送到我的 Facebook 地址一样,我知道谁是这条消息的发件人。4735804651 是我的 Facebook ID,收件人字段中的最后两个值(零)指的是发件人和另一个不是我朋友的 facebook 用户。在我发送的原始电子邮件中,我输入了我的@facebook.com 电子邮件和另一个@m.facebook.com 用户电子邮件每个人都收到了消息。当我从 FB 界面读取它并飞过发件人姓名时,我可以看到发件人电子邮件地址。如何通过 facebook api 或 FQL 获取它?

谢谢。

4

1 回答 1

0

您首先必须获取消息所在的文件夹 ID://0 个收件箱,1 个otubox,4 个更新//

SELECT folder_id, name, unread_count, viewer_id FROM mailbox_folder WHERE viewer_id=me()

获取folder_id时,您可以获得thread_id

SELECT thread_id  FROM thread WHERE folder_id = x AND viewer_id=me()

使用这个thread_id,您可以从中获取所有消息:

SELECT message_id, author_id, body, created_time, viewer_id FROM message WHERE thread_id = xxxxxxx

并总结:

SELECT message_id, thread_id, author_id, body, created_time, viewer_id FROM message WHERE thread_id   in (SELECT thread_id  FROM thread WHERE folder_id in(SELECT folder_id  FROM mailbox_folder WHERE viewer_id=me()) AND viewer_id=me())

对于所有这一切,您需要一个应用令牌

你可以在这里试试:https ://developers.facebook.com/tools/explorer

于 2014-04-17T01:52:11.043 回答