如何正确理解Google重定向URI?

时间:2015-02-20 07:44:56

标签: google-oauth

Google Developer Console页面,它解释了" Google Redirect URI"是:

  

确定响应的发送位置。此参数的值   必须与API控制台中注册的值之一完全匹配   (包括http或https计划,案例和尾随' /')。

不确定,这个解释是否与我的想法相同:

在我的应用程序(网络应用程序)上,它允许用户通过Google登录(假设,我在我的网络应用程序上注册了配置了ClientID / secrete的Google项目,并且在Google COnsole页面上,redirectURI是&#34 ; http://bbc.co.uk")。

通过我的Google帐户成功登录Google后,我的网络应用登录页面将被重定向到" http://bbc.co.uk"与Google RedirectURI一样?

3 个答案:

答案 0 :(得分:1)

最后一句话有点含糊不清。更好的描述是:

  

使用Google成功登录Google帐户后   凭据,Google会将我的浏览器重定向回   在Google中为Web应用注册的重定向URI http://bbc.co.uk> API控制台。

只是为了确定:这意味着重定向URI应该是您的Web应用程序的一部分。它实际上不是Google的重定向URI,而是您在Google API控制台中为您的网络应用配置的重定向URI。

答案 1 :(得分:1)

我认为措辞"确定响应的发送位置"让很多初学者感到困惑,因为它暗示谷歌会以某种方式直接调用该URL。然后单词"重定向"导致人们将网址与用户在进行身份验证后访问的应用页面混淆。

http://bbc.co.uk绝对不是重定向网址。重定向网址通常看起来像https://myapp.com/servlet_or_php_that_i_wrote_to_process_tokens.php

谷歌将会打电话给#34; servlet_or_php_that_i_wrote_to_process_tokens.php通过将浏览器重定向到它。一旦servlet_or_php_that_i_wrote_to_process_tokens.php完成令牌所需的任何操作,它就会发出自己的重定向到(比方说)bbc.co.uk

答案 2 :(得分:0)

让我看看我是否能以不同的方式解释这一点。

如果您没有重定向URI,会发生什么?

如果您转到开发人员控制台并默认创建Client ID for native application重定向URI

enter image description here

这会将身份验证重定向回到请求的位置。对于本机安装的应用程序,这是必需的,因为无法知道用户在哪里安装了应用程序。

让我们看看这个

请求身份验证:

  

https://accounts.google.com/o/oauth2/auth?client_id={clientid}.apps.googleusercontent.com&redirect_uri=urn:ietf:wg:oauth:2.0:oob&scope=https://www.googleapis.com/auth/analytics.readonly&response_type=code

如果您将上述行放在网络浏览器中,用户将会看到类似这样的内容

enter image description here

假设他们选择了ok,那么他们会将它显示回来。

enter image description here

这是身份验证代码,不要与访问令牌混淆。这只是第一步。一旦您的应用程序具有身份验证代码,它就可以将其交换为刷新令牌和访问令牌。大多数客户端库在内部处理此步骤。您和您的用户永远不会看到此身份验证代码。

返回重定向URI:

如果Web应用程序需要能够获取该身份验证代码的Web应用程序。现在我可能不应该告诉你这个,但你可以在你的web应用程序中使用本机应用程序客户端,它会起作用。为什么,因为身份验证服务器只会将身份验证代码返回到请求它的位置。出于安全考虑,这可能是一种不好的做法。

那么你需要在重定向uri中放置什么。您已准备好处理此身份验证代码的文件。通常它与登录页面相同,但您可以有几个。只需将它们分别放在不同的行上。

http://localhost/login.php
http://www.daimto.com/login.php

我喜欢这样做,因为当我在本地进行测试时,它会在服务器上运行时运行。