问题 如何处理任意数量的重定向URI?


我正在开发一个用户拥有自己的网址的应用程序,他们需要使用Google API - 当然还有不同的重定向URI,比如

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

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


4044
2018-01-22 10:49


起源

见答案 stackoverflow.com/questions/7722062/...  谢谢! - Kiran


答案:


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

这个答案 有更多的信息。


15
2018-01-22 20:21



嗯,我该如何处理响应?似乎不是那里的“状态”参数。或者我可以在收到代码后使用任何重定向URI吗?如何调用实际的API?如果我有访问令牌,我可以从任何地方使用它或有什么限制? - r1pp3rj4ck
在准备请求时传入state参数。例如,您可以在那里包含用户名。收到授权代码并将其交换为访问/刷新令牌后,您将拥有一个有效的访问令牌以及填充了用户名的州参数。如何处理它取决于您的应用程序。访问令牌的一个主要限制是它很短暂(您可以检查响应中的expires_in参数,我认为它是3600秒)。因此,您需要定期更换长期刷新令牌以获取访问令牌。 - vlatko
谢谢!实际上,在你回复我的评论之前,我解决了整个事情,但它仍然清除了一些事情。 - r1pp3rj4ck