Facebook登录多个域名

时间:2012-09-06 08:41:20

标签: facebook

我知道facebook允许我为我的应用指定多个域名。 I can specify multiple App Domains

但在“Facebook登录网站”中,我只能指定一个网址。 I can only specify one Site URL

我是否可以使用相同的应用程序对domain.se,domain.dk和domain.net上的用户进行身份验证?或者我应该为每个域创建一个应用程序吗?

4 个答案:

答案 0 :(得分:46)

技术上可以在多个域上使用 Facebook Connect ,有一些限制(最多5个域)。

因此,执行此操作的关键是在应用设置下的应用域字段中添加所有域

enter image description here

然而,问题是Facebook只允许您添加从您的Canvas URL或网站或网页标记网址派生的网域,因此如果您尝试输入任何其他内容,则会收到错误消息看起来像这样:

enter image description here

解决方案是使用在Facebook上创建应用网站 Facebook标签添加平台按钮,然后输入指向其他域的网址。这是我的意思的一个例子:

enter image description here

如果您为每个字段使用唯一域,则最多可以使用5个不同的域。我已经使用多达3个域测试了这种技术,但我认为它应该适用于所有5个域。

注意:Facebook管理员功能会不时发生变化,因此所有这些都可能会发生变化

答案 1 :(得分:10)

只要您在应用程序设置中列出了所有需要的App Domains,您就应该能够对其中的任何用户进行身份验证。

“Facebook登录网站”实际上只是用作您网站/应用程序的链接。

更新2(2016年7月):

  

应用领域必须与安全画布网址,移动网站网址,Unity二进制网址,网站网址或安全网页标签网址相匹配。

更新(2013年12月):
在撰写原始答案时,可以在应用程序设置中列出任何域,但从那时起应用程序设置的UI(以及处理应用程序域的方式)至少改变了几次,在某些时候你只能列出从应用程序的某个画布页面派生的域。

2013年12月以来,可以(再次)列出不是从应用程序画布URL派生的域。

Application Domains Settings

答案 2 :(得分:1)

我在开发/制作方案中发现的最好的事情是添加一个“测试应用程序”,然后为您的开发网站添加一个平台 - 因为您必须提供“页面选项卡网址”所在的位置将其用作平台。

如果您需要申请状态或权限审核,Facebook会要求您的“网页网址”生效/可访问。

这让我了解了“登录开发”/“登录生产”场景。

答案 3 :(得分:0)

假设您的域名由同一个Web服务器提供,并且您可以访问该Web服务器,则可以使用手动登录过程:https://developers.facebook.com/docs/facebook-login/manually-build-a-login-flow从任意多个域登录。

假设您的域名是site1.com,site2.com ....您不必使用Facebook javascript API,而只需在每个网站上放置一个普通的旧登录按钮,将浏览器重定向到Facebook登录如上文所述的页面。在状态变量中,您可以指定一个代码,指示您的哪些站点正在请求登录。在重定向中,您将使用您分配给Web服务器的单个服务域(例如fb.mywebserver.com),并在facebook登录设置页面中指定为已验证的重定向URL。所有网站都将重定向到同一个网址,避免了支持多个网域的问题。

用户登录后,浏览器将重定向到fb.mywebserver.com并传递状态,告诉您哪个站点请求登录,以及可以在后端使用的代码来检索用户的信息使用Facebook图形apis。您使用uid在数据存储中存储此信息,然后使用信息状态,您重定向到相应的站点,包括指示Facebook登录的参数(例如site1.com?fbc={some uid})。浏览器将乖乖地调用site1.com?fbc ...您的Web服务器将收到此请求并检测fbc参数,该参数告诉它将相应的Facebook登录用户与此站点相关联。然后,它可以使用uid检索登录的用户信息,例如,返回此用户的会话cookie以及页面。如果您在服务器上生成页面,当然也可以包括欢迎“用户”,或者您的客户端代码可以执行ajax调用来检索该信息。

从用户的角度来看,他们按下登录Facebook按钮,被重定向到他们登录的Facebook登录页面,然后在登录状态下被重定向回您的站点。不像登录弹出窗口那样好,但可能是可以接受的。

类似的过程也可以用于谷歌登录