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

r1p*_*4ck 14 google-oauth

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

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

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

vla*_*tko 15

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

这个答案有更多的信息.

  • 在准备请求时传入state参数.例如,您可以在那里包含用户名.收到授权代码并将其交换为访问/刷新令牌后,您将拥有一个有效的访问令牌以及填充了用户名的状态参数.如何处理它取决于您的应用程序.访问令牌的一个主要限制是它很短暂(您可以检查响应中的expires_in参数,我认为它是3600秒).因此,您需要定期更换长期刷新令牌以获取访问令牌. (2认同)