Java Gmail API消息列出了奇怪的行为

Java Gmail API消息列出了奇怪的行为,java,oauth-2.0,gmail-api,Java,Oauth 2.0,Gmail Api,所以我最近一直在开发一个服务器端应用程序,它根据历史id从用户那里收集信息。我正在进行完全同步 通常,我会得到这样的回答: { "messages": [ { "id": "14d9c91dbba84646", "threadId": "14d9a7f9b36c65ae" }, ], "nextPageToken": "14788016228466612591", "resultSizeEstimate": 832 } 这正是我在99%的案例中得到的。但是,对于某些

所以我最近一直在开发一个服务器端应用程序,它根据历史id从用户那里收集信息。我正在进行完全同步

通常,我会得到这样的回答:

{
 "messages": [
  {
   "id": "14d9c91dbba84646",
   "threadId": "14d9a7f9b36c65ae"
  }, 
],
 "nextPageToken": "14788016228466612591",
 "resultSizeEstimate": 832
}
这正是我在99%的案例中得到的。但是,对于某些用户,我只得到以下信息:

{"resultSizeEstimate":0}

没有其他信息。请注意,这是完全同步的。我觉得这很奇怪,因为即使在全新的电子邮件帐户上,我也会收到最旧的信息。提供此结果的电子邮件之一是@yahoo.com电子邮件。这本身并不奇怪,因为非gmail帐户可以有OAuth凭据。然而,通常情况下,当用户没有gmail收件箱时,我会收到一个带有FailedPremission的400错误。有人能提供一些关于这种行为的见解吗?

你所说的“完全同步”是什么意思?根据我的经验,resultSizeEstimate的误差幅度可能相当大;甚至在球场上也没有。使用nextPageToken几次后,效果会有所改善。你的问题到底是什么?你是想说零的估计是无效的吗?估计值必须有多准确才能不出错?我所说的完全同步的意思在这里有文档记录:我不是想说估计值无效,我只是想知道邮箱的状态是什么,以及我应该如何处理这些用户。这让我感到奇怪,因为我能够进行身份验证,但是它是一个@yahoo.com电子邮件帐户你怎么会认为它是一个yahoo帐户?他们告诉你的是他们的电子邮件地址,而他们实际用来进行身份验证的电子邮件地址可能是两种不同的东西。检查谷歌认为他们的电子邮件地址是什么,例如:根据个人资料API,这确实是一个雅虎帐户。它也给了我一个历史ID。然而,试图拉一个历史列表的基础上没有,ID只是404。嗯,这很有趣!两种理论:这是gmail正在致力于帮助的新东西——通过将其构建到gmail API中?或者,不太令人兴奋的是,用户已经从他们的yahoo帐户设置了imap/pop pull,而您正在查看他们的默认别名/返回地址?如果你发现更多关于这方面的信息,请随时与我联系。