有没有办法允许在多个子域上使用单个Facebook应用程序登录?

时间:2017-10-01 17:14:29

标签: facebook facebook-graph-api facebook-javascript-sdk

我正在尝试使用Facebook JS SDK构建“此活动的RSVP”动作。

我们所有的网站都在多个子域(event1.example.comevent2.example.com)上运行,我正在尝试设置一个允许用户回复的Facebook应用。

理想情况下,我希望能够在Valid OAuth redirect URIs设置中指定通配符子域,但Facebook似乎不允许这样做。

之前的StackOverflow回答说,要么只是放入顶级域名,要么将该字段留空就可以了(for example),但我总是得到This redirect failed because the redirect URI is not whitelisted in the app’s Client OAuth Settings错误。

令人沮丧的是,我们不应该需要任何类型的重定向回调到服务器。我只想要一个短命令牌来发布事件RSVP,这应该只是客户端。

有没有办法实现这个目标?

我能想到的选择......

每个子域名一个应用程序我们有100个子域名,因此为每个子域名创建Facebook应用程序不起作用(加上这是一个手动过程)

将所有子域列为重定向URI ,它在重定向URI的数量上显示Facebook has a limit,此外,这也是一个手动过程 - 没有用于添加这些

的API端点

通过JS将重定向URI设置为我们的根域,然后忽略回调 - 这似乎很有希望,但使用FB.login param调用redirect_uri会出错: When using FB.ui, you should not specify a redirect_uri.有没有办法在没有FB.login的情况下执行此操作?

以某种方式让Facebook知道我们根本不关心那些重定向 - 是否有其他方式来请求权限并在不需要oauth重定向的情况下进行JS API调用?

提前感谢任何见解...

2 个答案:

答案 0 :(得分:0)

我不认为有一种方法可以在多个域上通过Facebook登录,但是有一个适当的解决方法可以在多个域上实现登录,它被称为单点登录:

请参阅:

https://www.sitepoint.com/single-sign-on-explained/

https://github.com/cubiclesoft/sso-server

答案 1 :(得分:0)

我们可以使用一个特定的子域/主域本身来处理facebook身份验证

每次都会传递包含state的{​​{1}},以便无需添加子域来重定向uri列表