如何为Google OAuth 2添加多个重定向URI?

Lam*_*bda 23 google-api socialauth url-redirection google-oauth social-authentication

我正在尝试localhost:8080使用Social Auth for Java 在我的计算机(at )上运行的玩具应用程序中使用Google OAuth 2身份验证.

但是,当我的应用连接到Google以对用户进行身份验证时,Google会回复此错误页面:

在此输入图像描述

我的应用程序名为"我的爱好应用程序",在开发者控制台中配置如下:

在此输入图像描述

Google OAuth 2文档中,指定了:

redirect_uri:开发人员控制台中为此项目列出的redirect_uri值之一.

确定响应的发送位置.此参数的值必须与Google Developers Console中为此项目列出的值之一完全匹配(包括http或https方案,大小写和尾随'/').

我有一些问题:

  • 如何redirect_uri在我的应用中添加多个?
  • 为什么Google将我的应用识别为"项目默认服务帐户"而不是"我的爱好应用"?

CMP*_*res 33

它实际上比你想象的要容易,不幸的是我花了几个小时来搞清楚.

如何在我的应用中添加多个redirect_uris?

通常情况下,当您在Google或其他地方添加多个链接时,您可以通过,或者;使用重定向URI 将其分开,您必须使用新行,这实际上并不是非常直观.因此,当您按下Edit Settings按钮时,如果您有更多链接,则可以添加到URI和/或Origins,由换行符分隔(enter).

无需复杂的应用程序配置或新密钥.

图片

为什么Google将我的应用识别为"项目默认服务帐户"而不是"我的爱好应用"?

关于你的第二个问题:你必须去"同意屏幕"选项卡更改您的应用程序信息,如你的PRODUCT NAME,HOMEPAGE,LOGO,等.


Vik*_*kas 6

这个答案可能不是问题的确切答案,但我认为这可能会帮助那些第一次使用 Google OAuth 并且想知道为什么他们的多个 URI 未被识别的人。

我们在代码中的 2 个地方使用了重定向 URI。第一次是在获取身份验证代码时,第二次是在将此代码交换为访问令牌时。

Google docs 中,明确提到对验证码请求(第一个请求)的响应将发送到重定向 URI。因此,如果您从端点 A 发出请求并将重定向 URI 指定为端点 B,Google 会将验证代码发送到端点 B。这很清楚并且工作正常,没有任何错误。

谈到第二个请求,文档有点模棱两可。redirect_URI 参数说明如下:

redirect_uri:您在 API 控制台中指定的 URI,如设置重定向 URI 中所述。

这是我在理解其工作原理时犯的错误。按照与第一次调用类似的方法,我使用了第三个端点 C,并在进行第二次调用时在 redirect_URI 参数中传递了这个端点 C。尽管在 API 控制台中指定了端点 B 和 C,但我收到了 URI 不匹配错误。

问题在于,与第一次调用的情况不同,第二次调用的响应来自发出请求的同一端点。我在 python 中提出了一个请求,如下所示:

r = requests.post(token_endpoint, params)
Run Code Online (Sandbox Code Playgroud)

r 有带有令牌的响应。

我的 URI 不匹配,因为我应该在两个调用中使用相同的 redirect_URI。

因此,对于单个 OAuth 请求,我们需要使用单个 redirect_URI。

但是,随之而来的问题是,为什么在 API 控制台中允许单个应用程序使用多个 redirect_URI。我假设如果我们需要在同一个应用程序中进行多对 authCode-token 调用,我们有使用多个 redirect_URI 的余地。

  • _为什么单个应用程序的 API 控制台中允许使用多个重定向 URI?_ 我可以想象两个原因:(1) 您可以从不同的环境进行测试(例如在开发期间)。(2) 您可能在不同的 URL 提供相同的应用程序,并且不希望用户切换域。 (2认同)