【问题标题】:Facebook App with wildcard OAuth redirect URL带有通配符 OAuth 重定向 URL 的 Facebook 应用
【发布时间】: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)。

标签: facebook oauth


【解决方案1】:

以下是通过 4 个简单步骤完成此操作的方法:

  1. 为您的应用创建一个新的子域(例如 auth.example.com)。
  2. 在您指定有效 OAuth 重定向 URI 的 Facebook 应用程序的设置选项卡中,将新子域放入您的 Oauth 控制器的正确路径(例如https://auth.example.com/auth/facebook/callback)。
  3. 当用户想要授权您的应用时,请照常将他们发送到 Facebook,并使用他们的用户 ID(或其他标识符)作为参数(例如 https://auth.example.com/auth/facebook/callback?user_id=123)指定您的新重定向 URL。
  4. 当用户在您的服务器上点击该重定向 URI 时,保存他们的访问令牌,然后将其重定向到您想要的任何位置(例如返回到 https://foo.example.com)。

我的应用已成功使用这种精确设置近两年,我们每天为数千名用户提供服务。

【讨论】:

  • 现在还可以这样做吗?我尝试向回调 URI 添加一个参数,但它引发了有关应用程序域的错误
  • 你最好使用状态参数而不是自定义参数
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2018-11-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-06-05
  • 1970-01-01
相关资源
最近更新 更多