生成 OAuth 2 SASL 字符串时出现错误代码 400

Posted

技术标签:

【中文标题】生成 OAuth 2 SASL 字符串时出现错误代码 400【英文标题】:Error code 400 on generating OAuth 2 SASL string 【发布时间】:2013-07-16 00:36:29 【问题描述】:

我为 OAuth 2 生成了以下 SASL 字符串:

user=designadmin@mydesign.mygbiz.com^Aauth=Bearer ya29.AHES6ZTtYOu0NR0vAYbrvKZNcHJPuZEpr4Hk3W3dXcXFQ88^A^A

然后我对其进行编码并像这样发送编码后的字符串:

MSB AUTHENTICATE XOAUTH2 编码字符串

但我得到的错误响应为:

"status":"400","schemes":"Bearer","scope":"https://mail.google.com/"

这个错误是什么意思,我该如何纠正它?

【问题讨论】:

你是在插入 caret-a,还是控制 a(代码点 1) 是的,我已经尝试过使用“^A”和“\001”。 使用 \001。还打印出 IMAP 错误,在 bad or no response 中,它包含的信息不仅仅是 400。 我得到了同样的错误。你有想过这个吗? 【参考方案1】:

我终于明白了。就我而言,令牌生成过程中缺少 Gmail 范围(“https://mail.google.com/”)。它现在工作正常。

【讨论】:

你能详细解释一下吗? 当您调用generateAuthUrl时,您需要传递一个对象,其中包含一个字符串数组scope作为作用域,其中一个字符串是"https://mail.google.com/"【参考方案2】:

+1 to akshay 自我回答。

如果您使用过期的令牌,也会发生这种情况。如果是这种情况,只需重新验证您的用户并使用新令牌。

【讨论】:

以上是关于生成 OAuth 2 SASL 字符串时出现错误代码 400的主要内容,如果未能解决你的问题,请参考以下文章

AWS 认知;命中 /oauth2/token 时出现未授权客户端错误

使用 OAuth2 服务帐户生成访问令牌时出现问题

使用 OAuth 1.0 生成签名时出现问题

尝试使用 Discord 的 oauth2 时出现“invalid_grant”错误

尽管有 CORS,但在使用 jHipster oAuth 时出现未经授权的错误

在 React/Express 中使用 PassportJS 进行 Google OAuth 时出现 CORS 错误