如何调试服务器端`redirect_uri_mismatch` Google Signin的错误



我正在尝试使用Google登录的Google登录,遵循Google的文档用于服务器端应用程序的Google文档,但是我遇到了redirect_uri_mismatch错误(与该文档中的示例,我正在使用Google的Nodejs SDK(。

我关注的一般流量是使用Google的JavaScript SDK从用户请求offlineAccessCode(),将访问代码发送到服务器(firebase函数(,使用访问代码获取访问令牌和刷新令牌,然后刷新令牌保存刷新令牌以供以后使用(这是文档中概述的流(。

看来redirect_uri_mismatch一词的含义是自称的,但是,如链接的文档中所述,The Authorized redirect URI field does not require a value. Redirect URIs are not used with JavaScript APIs.该行来自"步骤1:创建客户端ID和客户端秘密" 并正在解释如何配置OAuth客户端凭据。这是提到重定向URI的文档中唯一的一次,并且没有迹象表明当服务器使用授权代码获取访问令牌时,需要重定向URI。

的确,使用从客户端获得的访问代码在云函数的上下文中,重定向URI的概念似乎没有意义。如果服务器需要作为JavaScript客户端提供匹配的redirect_uri(似乎在任何地方都没有指定(,则我不确定JavaScript客户端使用的redirect_uri是什么。

因此,在背景下,有人知道如何解决此redirect_uri_mismatch错误吗?

或更一般而言,关于实现此验证流的任何指针(我的云功能是使用Google Nodejs SDK编写的JavaScript(。我发现很难调试此问题。

更新

我意识到错误消息说 redirect_uri_mismatch的原因是因为我一直在测试各种值为 redirect_uri。当我从请求中删除(可选的(redirect_uri参数时,Google服务器的响应是invalid_request: Missing parameter redirect_uri。因此,Google清楚地表明,即使文档似乎暗示该验证流程并不是必需的,因此它想要重定向URI。作为一个更大的问题,该文档似乎没有描述如何在单页应用程序上为Auth Flow设置重定向URI。

ah ha!答案(如其他S.O.答案中给出(是将redirect_uri设置为服务器上的"postmessage"(在我的情况下为Firebase功能(。我不知道这个答案来自何处(即我在文档中找不到它(,但是它有效。

最新更新