允许一个Facebook应用程序拥有多个域名(类似于Tumblr)

36

我正在尝试使用Facebook对象调试器对我的网站进行验证,但遇到以下错误:

URL为“http://www.example.com/latest”的类型为“smallteaser: teaser”的对象无效,因为域名“www.example.com”未被允许用于指定的应用程序ID“597566643589666”。

这个错误很容易理解,因为我没有允许example.com域名特定访问Facebook应用程序。但是我真的需要吗?

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

<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应用程序具有多个URL,并且所有内容都正确验证。
那么为什么这个Tumblr页面可以正确验证,而我的不能呢?如何配置Facebook应用程序以允许在多个域上使用?

不确定是否相关,但我注意到当我访问https://graph.facebook.com/210188892479733时,它显示的类型是网站,而不是小预告片:预告片... - stikkos
7个回答

18
我遇到了相同的问题。我认为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出现在所有域上,但实际上只在“.tumblr.com”上起作用;Facebook调试工具实际上不验证app_id。

17
如何配置Facebook应用程序以允许在多个域上使用?如果您尝试在应用程序设置中添加多个域,您将收到以下错误:
example.com必须源自以下之一:站点URL、移动站点URL、画布URL、安全画布URL、页面选项卡URL或安全页面选项卡URL。
example.org必须源自以下之一:站点URL、移动站点URL、画布URL、安全画布URL、页面选项卡URL或安全页面选项卡URL。
解决方案是将“Page Tab URL”设置为example.org上的虚假URL,例如:example.org/myfakepage。您实际上不必使用页面选项卡来完成任何操作,这只是允许您添加第二个域的方式。

2
这对我有用!如果我必须经过审核流程,我有点担心FB会做什么 - 我猜这可能会引起警觉。我想一个解决方法是为他们创建一个真正的虚假页面选项卡(可以加载和一切),供他们检查。当然,我们在应用程序中不会引用此页面选项卡。 - rinogo
请问您能否再解释一下应该做什么?我没太明白。谢谢! - ofir_aghai

13
一个Facebook应用程序如何配置为允许在多个域上使用?
它不行。 Facebook应用程序绑定一个域名(及其子域名)。
否则,就可以添加许多(大型)网站到单个应用程序中,然后在每个网站上嵌入JS SDK,并识别连接到该应用程序的用户。并跟踪他们在“半个互联网”中的(几乎)每一步。
当然,Facebook不希望这样做 - 因为它们想从收集关于用户和他们通过网络移动的数据(理论上,他们可以追踪使用简单的喜欢按钮的每个网站上的您)。如果他们赋予每个应用程序开发人员相同的功能,那么他们会很愚蠢。
¹好吧,那是我的猜测。

我知道你的意思,但是如果你看一下我原帖中的Tumblr示例,你会发现他们明显正在使用具有相同App ID的多个域,并且所有内容都可以正确验证...那么Tumblr应用程序如何工作,而我的或你的应用程序却不能呢? - stikkos
真的吗?这对我听起来很奇怪,尤其是考虑到 Facebook 曾经想要收购 Tumblr,但最终输给了 Yahoo。这对我来说毫无意义... - stikkos
那么,什么时候您被认为是一个“大玩家”,并且是否存在正式的工作流程来请求Facebook授予此特权?我在文档中找不到任何相关信息... - stikkos
1
每个月在Facebook上花费几十万美元进行广告投放,然后您就可以得到一个实际的账户经理,可以与其交流 :-) - CBroe
我知道这已经过时了,但是我想说如果使用不同的应用程序,跨多个域跟踪用户是可能的。您可以在自己的应用程序中映射用户:https://developers.facebook.com/docs/apps/for-business - BigJ
显示剩余5条评论

12

除非域名仅在扩展名或子域名上有所不同,否则不能添加多个域名。

在下面的示例中,“cuponeados”只有域名扩展名不同(.com.com.ar),因此允许使用cuponeados.com.arcuponeados.com

enter image description here

请参见这里的答案:需要在单个Facebook应用程序中添加多个域


2
在某种程度上,这个解决方案是可行的,但请注意它会拒绝本地主机URL。 - Ash Blue
3
对于本地主机,尝试在您的hosts文件中设置一些解析为127.0.0.1的域名(例如dev.mysite.com),并在FB中使用该域名。 - demisx
16
请注意,这不是解决方案。我无法添加任何未完全包含在应用程序设置中的站点URL,实际上,保存时会出现错误并告诉您哪些字段值可以在此处使用。 - Sammaye
3
错误!使用您的解决方案,您只能添加一个站点网址,并且必须将相同的域定义为您网站的网址。而问题是关于一个应用程序拥有多个域名的情况。 - Green
1
@Sammaye 你是对的。我刚刚编辑了这个解决方案,现在它是正确的。 - modulitos

5
Tumbler的做法是允许在他们的域名下使用*.example.com子域名。这将允许所有子域名与他们的应用程序一起工作(例如odisharkins.example.com,facebook.example.com)。添加多个域名有一些注意事项:请参考Facebook博客
进一步的域名必须来自以下之一:站点URL、移动站点URL、画布URL、安全画布URL、页面选项卡URL或安全页面选项卡URL
odisharkins.tumbler.com不会有问题:它可以正常工作!
然而,harkinstech.com或odisharkins.com将无法工作。

1
我最终是这样做的,现在我在og:url中使用子域名URL。请注意,您仍然必须允许Facebook代理特定访问权限以绕过子域重定向...奇怪的是Tumblr实际上是以不同的方式处理它的,请查看https://developers.facebook.com/tools/debug/og/object?q=http%3A%2F%2Fwww.davidslog.com,这是无法解释为什么会验证通过... - stikkos
这不是示例的正确做法。Facebook 调试工具显示没有数据指向二级域名并指向三级域名 tumblr。 - Jonathan Vanasco

0

4/19/17 - 所以这似乎已经成功地允许多个域进行身份验证。添加一个平台>网站,然后添加多个URL,用空格分隔。https://example.com/``https.example2.com/。这些域将无法在“应用程序域”字段中验证,但到目前为止,它们的身份验证是有效的。逗号不起作用,它们会破坏带有逗号的那个,但逗号后面的那个可以正常工作... - keen

-7
  1. 前往developers.facebook.com。
  2. 点击您的应用程序并编辑设置。
  3. 以以下形式添加域名:example.com、example.org、subdomain.example.com(不要加http)。
  4. 保存。

这是目前唯一的方法。您必须手动添加域名(和子域名),否则无法继续。


1
我知道如何手动添加它们,但我正在尝试使用动态域。你认为Tumblr会手动添加每个自定义域吗?顺便说一下,你不能以这种方式添加多个域名,因为Facebook会给出错误提示:“域必须源自以下之一:站点URL、移动站点URL、画布URL、安全画布URL、页面选项卡URL或安全页面选项卡URL。” - stikkos
你的问题被列在Facebook下面。Tumblr与此无关。如果出现“[某某]无效,因为域名'www.skydivemag.com'未被指定应用程序ID '597566643589666'允许”,如果这是Facebook的错误,那么很可能是因为你没有将该域名列入列表中。 - tattvamasi
我以Tumblr为例,询问Tumblr如何配置同一应用程序ID的多个域名...我认为他们不会像你所建议的那样手动操作(也无法实现)。 - stikkos
如果你在使用Tumblr时遇到问题,请向他们的支持团队寻求帮助。如果你的错误是Facebook的错误,我相信就是这个原因。试一下吧。 - tattvamasi
你真的没有在听... 1)自己试一下,你会得到错误信息“域必须派生自以下之一:站点URL、移动站点URL、画布URL、安全画布URL、页面选项卡URL或安全页面选项卡URL。”2)我正在寻找如何在多个域上使用相同的应用程序ID而不手动添加域。这一定是可能的,因为Tumblr就是这样做的(因此是例子)。 - stikkos
让我们在聊天室里继续这个讨论 - tattvamasi

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接