允许1个Facebook应用程序的多个域(如Tumblr)

时间:2013-08-29 12:42:24

标签: html facebook html5 facebook-graph-api facebook-opengraph

我试图通过Facebook对象调试器验证我的网站,并且我遇到了以下错误:

  

类型为网址“http://www.example.com/latest”的对象   'smallteaser:teaser'因域名无效   指定的应用程序ID不允许使用“www.example.com”   '597566643589666'。

这个错误非常有意义,因为我没有允许example.com域特定访问Facebook应用程序。 但我真的需要吗?

我想要实现的与Tumblr在使用自定义域时的工作方式类似。 比如说,网站www.davidslog.com:它有以下元标记:

<meta property="fb:app_id" content="48119224995" />

   --> This is the Tumblr app ID


<meta property="og:url" content="http://www.davidslog.com/?og=1" />

   --> This is a custom domain which points to a Tumblr blog


<meta property="og:type" content="tumblr-feed:tumblelog" />

   --> This is a custom Tumblr object type (in namespace tumblr-feed)

然后,如果您将其与例如域theartofnotwriting.tumblr.com进行比较,该域具有以下元数据:

<meta property="fb:app_id" content="48119224995">

   --> This is the same Tumblr app ID

<meta property="og:url" content="http://theartofnotwriting.tumblr.com/?og=1">

   --> This is a different domain

<meta property="og:type" content="tumblr-feed:tumblelog">

您可以清楚地看到相同的Tumblr应用有多个网址,所有内容都可以正确验证。

那么为什么这个Tumblr页面正确验证而我的页面没有?如何配置Facebook应用程序以允许在多个域上使用?

7 个答案:

答案 0 :(得分:17)

  

如何配置Facebook应用程序以允许在多个应用程序上使用   域?

如果您尝试在应用设置中添加多个域,则会出现如下错误:

  

example.com 必须来自以下网站之一:网站网址,移动网站网址,   Canvas URL,Secure Canvas URL,Page Tab URL或Secure Page Tab URL。

     

example.org 必须来自以下网站之一:网站网址,移动网站网址,   Canvas URL,Secure Canvas URL,Page Tab URL或Secure Page Tab URL。

一种解决方案是将“网页标签网址”设置为 example.org 上的虚假网址,如下所示:

<强> example.org / myfakepage

您实际上不必使用页面选项卡。这只是允许您添加第二个域。

答案 1 :(得分:17)

我遇到了同样的问题。我认为Tumblr必须与Facebook建立某种合作伙伴关系以获得这种特殊待遇(ip白名单?特别api?) - 所以我联系了我在Facebook的前合作伙伴代表来询问。

我在Facebook上与平台工程师谈论此事,我完全错了。没有什么特别的。

在Tumblr上运行的所有域都使用单个app_id进行验证的原因是,facebook调试工具只检查og_tag结构的有效性(至少在app_id时)。它不会验证app_id是否与给定域正确关联。

您可以通过在两个不同的域上放置一个带有app_id的测试页来测试这一点 - 他们在调试工具中都可以正常验证。

在实际的Facebook API访问方面,Tumblr会在其域名中执行所有操作。当人们在Tumblr上使用Facebook按钮/等时,通常是通过第三方代理工具(如ShareThis)或嵌入非api按钮。我无法在Tumblr上找到使用Facebook API或app_id相关按钮的单个自定义域。如果可以的话,我很乐意看到它。

这是你想要的答案(或者我想要的) - 但这就是正在发生的事情。 Tumblr的app_id出现在所有域名中,但实际上只适用于&#34; .tumblr.com&#34 ;; Facebook调试工具实际上并没有验证app_id。

答案 2 :(得分:13)

  

如何配置Facebook应用以允许在多个域上使用?

它不能。 Facebook应用程序与一个域(及其子域)绑定。

想象一下否则会发生什么 - 有人可以在一个应用程序中添加大量(大)网站,然后f.e.将JS SDK嵌入其中,并识别通过“一半互联网”连接到该应用程序的用户......从而跟踪他们(几乎)每一步。

Facebook当然不希望这个¹ - 因为他们希望通过网络赚取他们收集的关于用户及其动作的数据(理论上他们可以在每个使用的网站上跟踪你一个简单的按钮) - 如果他们为每个应用程序开发人员提供相同的能力,他们将是愚蠢的。

¹好的,这是我自己的假设。

答案 3 :(得分:11)

您不能添加多个域,除非域仅因扩展名或子域而不同。

在下面的示例中,cuponeados仅因域名扩展(.com.com.ar)而有所不同,因此允许cuponeados.com.arcuponeados.com

enter image description here

请在此处查看此答案:Need to add multiple domains in a single Facebook Application

答案 4 :(得分:5)

Tumbler这样做的方法是使用* .example.com允许其域下的子域。这将允许所有子域使用他们的应用程序(如odisharkins.example.com,facebook.example.com)。添加多个域有一些方面:查看Facebook Blog

其他域必须来自以下之一:网站网址,移动网站网址,画布网址,安全画布网址,网页标签网址或安全网页标签网址

odisharkins.tumbler.com不会是一个问题:它会工作正常!

然而,harkinstech.com或odisharkins.com将无效。

答案 5 :(得分:0)

为我工作:&#34;诀窍是指定多个应用领域,并使用逗号分隔的有效网址列表进行网站网址配置。&#34;

https://www.sitepoint.com/community/t/single-facebook-app-with-multiple-domains/99834/4

答案 6 :(得分:-7)

  1. 访问developers.facebook.com。
  2. 点击您的应用程序并编辑设置。
  3. 使用以下格式向域添加域:example.com,example.org,subdomain.example.com(无http)。
  4. 保存。
  5. 这是唯一的方法,目前在东方。您可以手动添加域(和子域),也可以不继续。