Gmail oauth2在appengine上无效授权



正如通常发生的那样,客户更改了我们用于发送电子邮件的G Suite电子邮件密码(在Java@AppEngine上)。令牌已经像预期的那样被撤销了,我们设法让一切在DEV和UAT环境下工作,但是由于某种原因,PROD仍然得到臭名昭著的"无效授权"。我想知道是否有一些缓存保持原始凭证在数据存储?Stackdriver不允许对方法调用进行求值,因此无法看到里面的内容。我们怀疑它与缓存有关,但重新启动GAE实例(通过重新部署)并没有解决问题。欢迎提出任何建议!

这是日志中的一段:

原因:com.google.api.client.auth.oauth2。TokenResponseException: 400{"error": "invalid_grant"}com.google.api.client.auth.oauth2.TokenResponseException.from (TokenResponseException.java: 105)com.google.api.client.auth.oauth2.TokenRequest.executeUnparsed (TokenRequest.java: 287)com.google.api.client.auth.oauth2.TokenRequest.execute (TokenRequest.java: 307)com.google.api.client.auth.oauth2.Credential.executeRefreshToken (Credential.java: 570)com.google.api.client.auth.oauth2.Credential.refreshToken (Credential.java: 489)com.google.api.client.auth.oauth2.Credential.intercept (Credential.java: 217)com.google.api.client.http.HttpRequest.execute (HttpRequest.java: 859)com.google.api.client.googleapis.services.AbstractGoogleClientRequest.executeUnparsed (AbstractGoogleClientRequest.java: 419)com.google.api.client.googleapis.services.AbstractGoogleClientRequest.executeUnparsed (AbstractGoogleClientRequest.java: 352)com.google.api.client.googleapis.services.AbstractGoogleClientRequest.execute (AbstractGoogleClientRequest.java: 469)

不确定这次是如何工作的,但这个序列似乎工作:

  1. 暂停队列,以避免"旧"令牌被缓存一次又一次,当它试图重新发送电子邮件
  2. 从数据存储
  3. 中删除存储的凭据
  4. 刷新memcache
  5. 重新配置你的应用程序,授权它访问你的gmail(本质上是获得新的凭证到你的数据存储)
  6. 恢复队列并享受

最新更新