我正在努力解决 Gmail API 问题。需要开始的一些事情:
我的程序正在代表经过身份验证的用户发送电子邮件。几乎所有 Gmail API 功能都可以完美运行 - 我能够创建草稿、在不创建草稿的情况下发送电子邮件、对标签进行操作等。
该问题似乎仅在我尝试使用以下方法发送草稿对象时才会发生users.drafts.send: https: //developers.google.com/gmail/api/reference/rest/v1/users.drafts/send
当我创建草稿消息然后触发发送消息的请求时,我不一致地返回错误 400Precondition check failed.
这是对端点https://gmail.googleapis.com/gmail/v1/users/me/drafts/send?uploadType=multipart的 POST 请求
让我完全困惑的奇怪部分是,半秒后我可以使用相同的 OAuth 访问令牌针对不同的草稿消息 ID 发出相同的请求,并且效果完美。
此请求失败 - 时间戳 2022-01-04T19:43:50.278Z
Method:POST URL:https://gmail.googleapis.com/gmail/v1/users/me/drafts/send?uploadType=multipart Proto:HTTP/1.1 ProtoMajor:1 ProtoMinor:1 Header:map[Authorization:[Bearer ya29.a0ARrdaM9mREDACTED] Content-Type:[application/json]] Body:{Reader:0xc0004e7dd0} GetBody:0x7198e0 ContentLength:70 TransferEncoding:[] Close:false Host:gmail.googleapis.com Form:map[] PostForm:map[] MultipartForm:<nil> Trailer:map[] RemoteAddr: RequestURI: TLS:<nil> Cancel:<nil> Response:<nil> ctx:0xc000044060
身体对象:
{"id":"r155747228619414494","message":{"threadId":"17e269e7bb12bece"}}
此请求成功 - 时间戳 2022-01-04T19:43:50.230Z
Method:POST URL:https://gmail.googleapis.com/gmail/v1/users/me/drafts/send?uploadType=multipart Proto:HTTP/1.1 ProtoMajor:1 ProtoMinor:1 Header:map[Authorization:[Bearer ya29.a0ARrdaM9mREDACTED] Content-Type:[application/json]] Body:{Reader:0xc00061b920} GetBody:0x7198e0 ContentLength:70 TransferEncoding:[] Close:false Host:gmail.googleapis.com Form:map[] PostForm:map[] MultipartForm:<nil> Trailer:map[] RemoteAddr: RequestURI: TLS:<nil> Cancel:<nil> Response:<nil> ctx:0xc000044060
身体对象:
{"id":"r107084306592061046","message":{"threadId":"17e269e82b321030"}}
我正在捕获速率限制等场景的错误 - 所讨论的错误非常具体Precondition check failed.,到目前为止我只使用这个特定端点看到它。
我在网上找到的所有内容都表明此错误指向身份验证问题。我已经授权、未授权和重新授权,没有任何区别。
我还返回到上面的开发人员页面,并使用 Gmail 测试工具发送相同的请求正文值,草稿发送成功,这表明这可能不是损坏的草稿邮件。
所有这些背景都可以问两个问题:
谢谢!
小智 0
我们最近开始收到400“先决条件检查失败”的消息。不一致地来自
GET https://gmail.googleapis.com/gmail/v1/users/me/profile
Run Code Online (Sandbox Code Playgroud)
这似乎与我们提出比平常更多的请求的日子一致,所以我目前的理论是,这是某种速率限制。然而,这也可能是谷歌端罕见的内部错误(如果我们更多地查询它们,这种情况也更有可能发生)。根据评论,这似乎可能发生在几个不同的端点上,例如:
GET https://gmail.googleapis.com/gmail/v1/users/me/profile
GET https://gmail.googleapis.com/gmail/v1/users/{userId}/messages
POST https://gmail.googleapis.com/gmail/v1/users/me/drafts/send
Run Code Online (Sandbox Code Playgroud)
如果这是速率限制,您可能想知道我们可以发送多少个请求。我们的“正常”查询量约为每小时 1000 个 API 请求,而在收到此错误的 3 天里,我们每小时的 API 请求量激增至 3000 多个。
看起来官方的速率限制在这里 https://developers.google.com/gmail/api/reference/quota 如果我没看错的话,我们的配额为每个用户每秒 250 个“getProfile”请求,我怀疑我们正在击中。也许我们不知何故达到了不再指定的每日限额? /sf/answers/5387572431/
| 归档时间: |
|
| 查看次数: |
1674 次 |
| 最近记录: |