【问题标题】:How to deal with arbitrary amount of redirect URIs?如何处理任意数量的重定向 URI?
【发布时间】:2013-01-22 10:49:55
【问题描述】:

我正在开发一个应用程序,其中用户有自己的 URL,他们需要使用 Google API - 当然使用不同的重定向 URI,例如

  • www.example.com/johndoe/google/login
  • www.example.com/foobar/google/login

所以首先我想我可以通过使用通配符 (www.example.com/*/google/login) 简单地解决这个问题,但不幸的是它不能那样工作。然后我开始用 Perl 编写一个简单的代理,但我不确定它是否会工作,而且我们的时间不多了。处理这种情况的最佳方法是什么?我曾考虑从注册处理程序向控制台添加一个新的重定向 URI,但我没有找到服务器可以执行此操作的任何方法。

【问题讨论】:

标签: google-oauth


【解决方案1】:

Google OAuth2 重定向 URI 不支持通配符。我认为最好的方法是使用单个重定向 URI,并在 state 参数中传递用户信息。 state 参数作为响应返回给您。然后,当您收到授权代码/令牌时,您可以查找状态参数并适当地处理响应(例如,重定向到您的用户特定 URL)。

This answer 有更多信息。

【讨论】:

  • 嗯,我该如何处理响应?那里似乎不是“状态”参数。或者我可以在收到代码后使用任何重定向 URI 吗?调用实际的 API 怎么样?如果我有访问令牌,我可以在任何地方使用它吗?有什么限制?
  • 在准备请求时传入 state 参数。例如,您可以在其中包含用户名。在您收到授权码并将其交换为访问/刷新令牌后,您将拥有一个有效的访问令牌以及一个填充了用户名的状态参数。如何处理它取决于您的应用程序。访问令牌的一个主要限制是它的寿命很短(您可以检查响应中的 expires_in 参数,我认为它是 3600 秒)。因此,您需要定期将长期刷新令牌换成访问令牌。
  • 谢谢!实际上,在您回复我的评论之前,我已经解决了整个问题,但它仍然解决了一些问题。
  • @r1pp3rj4ck 我在多个自定义域中面临同样的问题,正如您在上面所说的,您解决了整个问题,那么您能指导我们解决以下问题吗? stackoverflow.com/questions/62996742/…
【解决方案2】:

您可以在 wildacrds 中使用 * 作为子域。 请参阅google article 这不是您想要的,但可以帮助某人

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-02-26
    • 2019-09-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-02-07
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多