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

时间:2014-05-18 00:29:42

标签: google-api google-oauth url-redirection socialauth social-authentication

我正在尝试将Google OAuth 2身份验证与我在我的计算机上运行的玩具应用程序(localhost:8080)一起使用Social Auth用于Java。

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

enter image description here

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

enter image description here

Google OAuth 2 docs中,指定了:

  

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

     

确定响应的发送位置。该   此参数的值必须与列出的值之一完全匹配   对于Google Developers Console中的此项目(包括http   或https计划,案例和尾随' /')。

我有几个问题:

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

2 个答案:

答案 0 :(得分:33)

这实际上比你想象的要容易,不幸的是,我花了几个小时来弄明白。

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

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

无需复杂的应用配置或新密钥。

image

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

关于第二个问题:您必须转到“同意屏幕”标签,更改您的应用信息,例如PRODUCT NAMEHOMEPAGELOGO等。

答案 1 :(得分:4)

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

我们在代码中的2个位置使用重定向URI。第一次,在获取auth代码时,第二次,在交换此代码时访问令牌。

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

来到第二个请求,文档有些含糊不清。 redirect_URI参数描述如下:

  

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

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

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

r = requests.post(token_endpoint, params)

r对令牌有响应。

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

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

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