【发布时间】:2016-06-24 09:57:32
【问题描述】:
我正在开发一个 Facebook 应用程序。在我的应用程序的高级设置选项卡中(在 Facebook 的开发者网站中),我想指定一个带有通配符的 OAuth 重定向 URL。
我的应用程序的每个用户都有一个自定义子域(例如foobar.example.com)。我希望能够指定一个 OAuth 重定向 URL,例如 *.example.com。
我知道对于 Twitter 和 LinkedIn 等其他平台,可以通过将重定向 URL 简单地设置为 example.com 来实现这一点,并且它将接受带有任何子域的重定向 URL,包括 www。在我的应用程序的常规设置选项卡中,我能够将网址从 app.example.com 更改为 example.com。完成此操作后,我仍然可以从app.example.com 进行身份验证,并且我被重定向回app.example.com/callback,因为app.example.com/callback 在我的应用设置中被列入白名单。
如果我尝试从另一个子域(例如 foobar.example.com)进行身份验证,之后我会被重定向回 app.example.com/callback,这不是我想要的。我尝试将重定向 URL 更改为 example.com,就像我对站点 URL 所做的那样,但随后我重定向到 example.com/callback 而不是 app.example.com/callback。
我也尝试过使用通配符,例如 *.example.com/callback,但 Facebook 不允许我在 URL 中使用通配符保存设置。
如何使我的重定向 URL 动态化,这样我就无需手动输入数百甚至数千个列入白名单的 URL?
【问题讨论】:
-
你不能。有效的 OAuth 重定向 URI 字段不允许使用通配符。
-
最好的办法是使用一个“主”域来处理登录,然后在登录流程完成后,重定向回用户来自的“原始”子域。
-
我正在考虑将其作为后备选项,假设我至少可以传递参数(例如用户的 id)。