Facebook应用程序与通配符Oauth重定向URL

时间:2016-03-09 20:05:41

标签: facebook

我有一个我正在研究的Facebook应用程序。在我的应用程序的高级设置选项卡(在Facebook的开发人员网站中)中,我想指定一个带有通配符的OAuth重定向URL。我的应用的每个用户都有一个自定义子域(例如foobar.example.com)。我希望能够指定OAuth重定向网址,例如*.example.com。我知道对于其他平台,例如Twitter和LinkedIn,可以通过将重定向URL简单地设置为example.com来实现这一点,并且它将接受包含www的任何子域的重定向URL。在我的应用的常规设置标签中,我可以将网址从app.example.com更改为example.com。完成此操作后,我仍然可以通过app.example.com进行身份验证,然后将我重定向回app.example.com/callback,因为app.example.com/callback已在我的应用设置中列入白名单。如果我尝试从其他子域(例如foobar.example.com)进行身份验证,之后我会重定向回app.example.com/callback,这不是我想要的。我尝试将重定向网址更改为example.com,就像我使用网站网址一样,但后来我重定向到example.com/callback而不是app.example.com/callback。我也尝试使用通配符,例如*.example.com/callback,但Facebook不允许我在URL中使用通配符保存设置。

如何让我的重定向网址动态化,以便我无需手动输入数百甚至数千个列入白名单的网址?

1 个答案:

答案 0 :(得分:2)

以下是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)。
  4. 当用户点击您服务器上的重定向URI时,请保存其访问令牌,然后将其重定向到您想要的任何位置(例如,返回https://foo.example.com)。
  5. 我的应用已经成功使用了这个确切的设置近两年,我们每天为数千名用户提供服务。