【问题标题】:How to understand the Google Redirect URI correctly?如何正确理解 Google 重定向 URI?
【发布时间】:2015-04-21 19:57:32
【问题描述】:

来自Google Developer Console页面,它解释了“Google Redirect URI”的含义是:

确定响应的发送位置。该参数的值 必须与 API 控制台中注册的值之一完全匹配 (包括 http 或 https 方案、大小写和结尾的 '/')。

不确定,这个解释是否和我想的一样:

在我的应用程序(网络应用程序)上,它允许用户通过 Google 登录(假设我注册了一个 Google 项目,并在我的网络应用程序上配置了 ClientID/secrete,并且在 Google COnsole 页面上,redirectURI 为“@987654322 @")。

在我通过我的 Google 帐户成功登录 Google 后,我的 Web 应用登录页面将被重定向到 Google RedirectURI 上的“http://bbc.co.uk”?

【问题讨论】:

    标签: google-oauth


    【解决方案1】:

    我认为“确定响应发送到何处”的措辞让很多初学者感到困惑,因为它暗示 Google 会以某种方式直接调用该 URL。然后“重定向”一词会导致人们将 URL 与用户通过身份验证后将访问的应用页面混淆。

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

    Google 将通过将浏览器重定向到 servlet_or_php_that_i_wrote_to_process_tokens.php 来“调用”它。一旦 servlet_or_php_that_i_wrote_to_process_tokens.php 完成了令牌所需的任何操作,它将发出自己的重定向到(例如)bbc.co.uk

    【讨论】:

    • 你能给我详细的例子吗?
    • 抱歉评论不清楚,正如你提到的“myapp.com/servlet_or_php_that_i_wrote_to_process_tokens.php”,你能给我一个真实的页面或真实的网站,在登录谷歌后,它会被重定向到其他不同的页面来自 Google Autho RedirectURI
    • 你还没有说你使用的是什么语言。这应该是关于 SO 的一个单独问题,因为它不再与 OAuth 相关。本质上,您需要发送带有位置标头的 302 状态。见en.wikipedia.org/wiki/HTTP_302
    • 您想告诉我授权 Google RedirectURI 是在哪种情况下加载的吗?
    【解决方案2】:

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

    如果没有重定向 URI 会怎样?

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

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

    让我们看看实际情况

    请求认证:

    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

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

    假设他们选择了 ok,那么他们会在他们面前显示这个。

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

    后向重定向 URI:

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

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

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

    我喜欢这样做,因为当我在本地测试而不是在服务器上测试时,它可以工作。

    【讨论】:

    • @DalmTo:感谢您的评论,来自您的 cmets,我了解到 RedirectURI 只是身份验证代码发送到的地方,而不是在用户登录 Google 后重定向到的页面成功地。那么,哪种情况下登录后会加载 Authorized Google RedirectURI 页面?
    【解决方案3】:

    最后一句话有点模棱两可。更好的描述是:

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

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

    【讨论】:

      猜你喜欢
      • 2012-07-05
      • 2014-08-08
      • 1970-01-01
      • 1970-01-01
      • 2021-01-31
      • 2023-03-20
      • 1970-01-01
      • 2019-06-17
      • 1970-01-01
      相关资源
      最近更新 更多