Google api Gmail API users.watch-没有historyId的详细信息
我已经成功地设置了GooglePub/Sub以使用Gmail API监视功能,如下所述:在我的Gmail帐户中监视收件箱标签 新消息到达后,我立即收到有效格式的推送通知,如:Google api Gmail API users.watch-没有historyId的详细信息,google-api,gmail-api,google-cloud-pubsub,Google Api,Gmail Api,Google Cloud Pubsub,我已经成功地设置了GooglePub/Sub以使用Gmail API监视功能,如下所述:在我的Gmail帐户中监视收件箱标签 新消息到达后,我立即收到有效格式的推送通知,如: { message: { data: '.......', attributes: {}, message_id: '1248700053943' }, subscription: '.....' } 在我解码数据之后,我收到了电子邮件和historyId。然后,正如建议的那样,我请求gmail
{ message:
{ data: '.......',
attributes: {},
message_id: '1248700053943' },
subscription: '.....' }
在我解码数据之后,我收到了电子邮件和historyId。然后,正如建议的那样,我请求gmail.users.history.list API(通过API控制台),并从推送通知中将startHistoryId设置为historyId。然后只得到空响应,没有任何细节:
GET https://www.googleapis.com/gmail/v1/users/me/history?startHistoryId=4658879&key={YOUR_API_KEY}
200 OK
- Show headers
{
"historyId": "4658894"
}
因此,来自通知的historyId似乎无效。
Gmail users.watch API似乎工作不正常,发送了错误的historyId,或者我只是缺少了什么?看起来我误解了users.history.list的工作方式,流程应该如下所述:
{
"historyId": "4658894"
}
但不是这个:
{
"history": [ ],
"historyId": "4658894"
}
同步指南中提供了更多详细信息:
因此,我们不能轻易地从推送通知中获得新邮件到达收件箱的详细信息,需要处理历史挖掘和同步以找到它 您确定在测试应用程序中使用的电子邮件地址与在API Explorer中使用的电子邮件地址完全相同吗?@Tholle,是的。此外,如果我从提供的SyryYID减去了一个比特,比如说不是4658879,而是4658800,并使用它作为StestTistRyID,我就能够在响应数组中间的某个地方获取关于新消息的数据。它不准确,而且工作起来很神奇,我需要一种简单的方法通过histroyId从推送消息中获取准确的数据。是的,推送通知只是一个无效通知。然后,客户端应该至少调用history.list(),然后可能调用messages.get()等其他调用,以获得最新的结果。有没有办法获取触发第一个webhook的消息?在你描述的情况下,我们永远不会收到最初的电子邮件。