【发布时间】:2015-10-26 03:47:09
【问题描述】:
我已成功设置 Google Pub/Sub 以使用 Gmail API 观看功能,如下所述:https://developers.google.com/gmail/api/guides/push 观看我的 gmail 帐户中的收件箱标签。
一旦有新消息到达,我会立即收到一条有效格式的推送通知,例如:
{ message:
{ data: '.......',
attributes: {},
message_id: '1248700053943' },
subscription: '.....' }
base64decode 数据后,我收到电子邮件和 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,或者我只是遗漏了什么?
【问题讨论】:
-
您确定您在测试应用程序中使用的电子邮件地址与在 API Explorer 中使用的电子邮件地址完全相同吗?
-
@Tholle,是的。此外,如果我从提供的 historyId 中减去一点,例如,不是 4658879 而是 4658800 并将其用作 startHistoryId,我就可以在响应数组中间的某个位置获取有关新消息的数据。它不准确,并且像魔术一样工作,我需要直接的方法来通过 histroyId 从推送消息中获取准确的数据。
-
你是如何设置watch api部分的,我的意思是我在哪里调用这个API或者它是一个sdk客户端?我如何使用手表,如果您可以分享代码/步骤,请
标签: google-api gmail-api google-cloud-pubsub