javascript – GMail API Users.threads.list缺少“消息”字段

我可以使用GMail的Users.threads.list API调用来检索线程列表.我还想抓住线程中属于每条消息的标签.

在这个方法的official documentation / live example上,有一个称为字段的区域,用户可以在其中指定他们希望引入的可选字段.它们甚至提供一些UI工具调用“字段编辑器”,以帮助您选择并正确格式化字段以包含在REST查询中:

《javascript – GMail API Users.threads.list缺少“消息”字段》

这导致以下有效的生成字段参数值:

nextPageToken,resultSizeEstimate,threads(historyId,id,messages/labelIds)

最终请求如下所示:

GET https://www.googleapis.com/gmail/v1/users/me/threads?includeSpamTrash=true&fields=nextPageToken%2CresultSizeEstimate%2Cthreads&key={YOUR_API_KEY}

在使用OAuth2进行身份验证后,我返回了一个threads []列表,但是它们都没有包含嵌套在它们中的预期消息[]数组!我知道字段掩码是有效的,因为当您请求字段时,GMail API会出错,该方法不支持标准HTTP 400和漂亮的打印错误消息.但在这种情况下,我得到的只是一个包含标记为“threads”的数组的对象,其中每个线程对象只有以下字段:

> id
>片段
> historyId

但没有消息数组.更奇怪的是,即使我删除字段自定义过滤器参数,我仍然得到这些相同的结果.我错过了一些明显的东西吗?

最佳答案 您必须首先获得
list the id of the threads,然后再向
get the thread and fields in the messages you want发出单独的请求.API Explorer允许您在列出时选择其他字段.

1.列出ID

请求

GET https://www.googleapis.com/gmail/v1/users/me/threads?access_token={access_token}

响应

{
 "threads": [
  {
   "id": "1570f8c16a1084de",
   "snippet": "Foo bar...",
   "historyId": "1234"
  }, ...
 ],
 "resultSizeEstimate": 100
}

2.获取主题

请求

GET https://www.googleapis.com/gmail/v1/users/me/threads/1570f8c16a1084de?access_token={access_token}

响应

{
 "id": "1570f8c16a1084de",
 "historyId": "1234",
 "messages": [
  {
   "id": "1570f8c16a1084de",
   "threadId": "1570f8c16a1084de",
   "labelIds": [
    "INBOX",
    "IMPORTANT",
    "CATEGORY_FORUMS"
    ], ...
   }
  }

如果您不想列出线程然后单独获取它们,则可以使用batch requests将其降低到2个请求.

点赞