我们有一个多方面的应用程序遇到了一些问题与谷歌OAuth。这里有一个基于Java的API,还有一个React前端和React本地移动应用程序。
一段时间以来,我们已经成功地使用了OAuth2,允许谷歌用户通过React应用程序登录。我们使用离线/代码方法,因此我们首先请求一个授权代码,该代码被发送到我们的API,然后通过Google服务器交换令牌。API负责额外的检查和帐户设置。
然而,我们在移动应用程序中遇到了问题(反应本机)。该应用程序“似乎”行为正确,因为它获得了一个授权代码,但是,当我们将其发送到API,而API试图将代码交换为一个令牌时,我们得到的响应是
{
"error": "unauthorized_client",
"error_description": "Unauthorized"
}我们可以从日志中看到,请求看起来不错。如果我们将这个失败请求的post主体与工作请求的正文进行比较,我们可以看到除了授权代码之外,内容是相同的。这是意料之中的。因此,unauthorized_client错误有点误导人。
在Google方面,Android凭据和网络凭据(由API使用)都在同一个项目下,因此我的理解是,尽管它们有不同的客户is,但不应该出现问题,因为Google Oauth支持跨客户身份。
有没有人遇到过类似的情况,明白我们的真正问题是什么?
发布于 2022-11-25 11:51:02
如果您接受在web应用程序上创建的刷新令牌,然后尝试在已安装的应用程序上使用该令牌,则会发生此问题,因为该客户端id不是用来创建刷新令牌的。
然而,我知道有一个例外。移动应用程序客户端可以使用其他客户端类型在同一个项目中创建的令牌,但这不是另一种方式。Web和已安装的客户端不能使用移动应用程序客户端创建的令牌。在移动客户端中有一些东西不是在网络上,而是安装在客户端上的。
因此,unauthorized_client意味着这个客户端id没有得到用户的授权。
https://stackoverflow.com/questions/74572246
复制相似问题