我尝试检测电子邮件是否有一个特定的标签。在文档here之后,我对推送消息进行了反序列化并得到了historyId 例如。 390100但事实证明我无法获得准确的390100历史记录。
history.list api有startHistoryId param,docs说你在历史记录ID 后得到了所有历史记录。
然而更糟糕的是390100历史事件是空的(原文如此!)。 labelsAdded的真实条目是之前的,即推送通知中的historyId,例如。在39086,未公布
尝试解决方法并减去例如。 15表单390100并使用startHistoryId 39085
执行history.list如果我好运并且39085仍然存在,我将不会获得404并最终得到我的标签被添加到消息中的信息。但这对我来说似乎是一个糟糕的黑客。
是否有任何可靠方式来了解添加了历史记录标签的哪一点,是否有可靠的方式向后搜索历史记录?
我还发布了rant / issue here
答案 0 :(得分:1)
您在推送通知中获得的historyId
只代表当前时间。因此,如果您在询问历史记录时使用此historyId
,则不会得到任何结果。请改用此工作流程:
historyId
。historyId
,然后您将获得所有相关更改。hisotryId
,然后下次使用。示例强>
historyId
醇>
请求强>
GET https://www.googleapis.com/gmail/v1/users/me/profile?fields=historyId&access_token={YOUR_API_KEY}
<强>响应强>
{
"historyId": "655156"
}
请求强>
GET https://www.googleapis.com/gmail/v1/users/me/history?labelId=STARRED&startHistoryId=655156&fields=history%2FlabelsAdded&key={YOUR_API_KEY}
<强>响应:强>
{
"history": [
{
"labelsAdded": [
{
"message": {
"id": "151237ed0d001368",
"threadId": "151237ed0d001368",
"labelIds": [
"STARRED",
"CATEGORY_UPDATES",
"INBOX"
]
},
"labelIds": [
"STARRED"
]
}
]
}
]
}
historyId
,然后再次使用。