【问题标题】:Allowing multiple domains for 1 Facebook App (like Tumblr)允许 1 个 Facebook 应用(如 Tumblr)使用多个域
【发布时间】:2013-08-29 12:42:24
【问题描述】:

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

在 URL '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 应用有多个 URL,并且一切都验证正确。

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

【问题讨论】:

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


【解决方案1】:

我遇到了同样的问题。我认为 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。

【讨论】:

    【解决方案2】:

    如何将 Facebook 应用程序配置为允许在多个平台上使用 域?

    如果您尝试在应用设置中添加多个域,则会收到如下所示的错误:

    example.com 必须源自以下之一:站点 URL、移动站点 URL、 画布 URL、安全画布 URL、页面选项卡 URL 或安全页面选项卡 URL。

    example.org 必须来自以下之一:站点 URL、移动站点 URL、 画布 URL、安全画布 URL、页面选项卡 URL 或安全页面选项卡 URL。

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

    example.org/myfakepage

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

    【讨论】:

    • 这对我有用!如果我必须通过审核流程,我对 FB 会做什么有点紧张——我猜这可能会引发危险信号。我想一种解决方法是制作一个真正的假页面选项卡(可以加载和所有内容)供他们检查。当然,我们不会在应用程序的其他任何地方引用此页面选项卡。
    • 你能解释一下该怎么做吗?我不明白。谢谢!
    【解决方案3】:

    如何将 facebook 应用程序配置为允许在多个域上使用?

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

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

    Facebook 当然不想要这个¹ - 因为他们想从他们收集的关于用户和他们在网络上的活动的数据中赚钱(理论上他们可以在每个使用一个简单的点赞按钮)——如果他们给每个应用程序开发者同样的能力,他们会很愚蠢。

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

    【讨论】:

    • 我明白你在说什么,但如果你看一下我原始帖子中的 Tumblr 示例,那么他们显然使用了具有相同 App ID 的多个域,并且所有这些都正确验证......那么如何它可以适用于 Tumblr 应用程序,但不适用于我或你的应用程序吗?
    • 请考虑,对于“大玩家”而言,Facebook 总是有可能放松为“普通”开发者制定的规则。
    • 真的吗???这对我来说听起来很奇怪,特别是考虑到 Facebook 想要收购 Tumblr,然后又失去了它,Yahoo。这对我来说没有意义......
    • 那么你什么时候被认为是“大玩家”,是否有正式的工作流程可以从 Facebook 请求此特权?我在文档中找不到任何关于此的内容...
    • 每月在 FB 上花费 10 万美元做广告,然后您就可以得到一个真正的客户经理,您可以与之交谈 :-)
    【解决方案4】:

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

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

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

    【讨论】:

    • 在某种程度上这个解决方案有效,但要注意它拒绝本地主机 URL。
    • 对于本地主机,尝试在您的主机文件中设置一些解析为 127.0.0.1 的域(例如 dev.mysite.com)并在 FB 中使用它。
    • 请注意,这不是解决方案。我无法添加尚未完全在应用程序设置中的任何站点 URL,它实际上会在保存时出错并告诉您此处使用哪些字段值
    • 错了!使用您的解决方案,您只能添加一个站点 url,并且必须定义与站点 url 相同的域。问题是关于一个应用程序的多个域。
    • @Sammaye 你是对的。我刚刚编辑了这个解决方案,现在它是正确的。
    【解决方案5】:

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

    其他域必须源自以下之一:站点 URL、移动站点 URL、画布 URL、安全画布 URL、页面标签 URL 或安全页面标签 URL

    odisharkins.tumbler.com 不会有问题:它可以正常工作!

    但是,harkinstech.com 或 odisharkins.com 将不起作用。

    【讨论】:

    • 我最终这样做了,我现在使用 og:url 中的子域 url。请注意,您仍然必须允许 Facebook 代理的特定访问权限才能绕过子域重定向......奇怪的是,Tumblr 实际上做了不同的事情,检查developers.facebook.com/tools/debug/og/… 它没有任何意义,这验证.. .
    • 这个例子不是这样完成的。 Facebook 调试工具在 2LD 上没有显示指向 3LD tumblr 子域的数据。
    【解决方案6】:

    为我工作:“诀窍是指定多个应用程序域并使用逗号分隔的有效 URL 列表进行网站 URL 配置。”

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

    【讨论】:

    • 4/19/17 - 所以这(似乎)已经允许多个域进行身份验证。添加一个平台 > 网站,然后添加多个 URL 空格分隔。 https://example.com/https.example2.com/。域不会在 App Domains 字段中验证,但到目前为止 auth 对它们有效。逗号不起作用,他们用逗号打破一个,但逗号后面的那个有效......
    【解决方案7】:
    1. 访问 developer.facebook.com。
    2. 点击您的应用程序并编辑设置。
    3. 以下列形式向其中添加域:example.com、example.org、subdomain.example.com(无 http)。
    4. 保存。

    这是唯一的方法,目前在东部。您要么手动添加域(和子域),要么无法继续。

    【讨论】:

    • 我知道如何手动添加它们,但我正在尝试使用动态域。你认为 Tumblr 会手动添加每个自定义域吗?顺便说一句,您不能以这种方式添加多个域,因为 facebook 会给出错误“域必须来自以下之一:站点 URL、移动站点 URL、画布 URL、安全画布 URL、页面标签 URL 或安全页面标签网址。'
    • 您的问题列在 Facebook 下。 Tumblr 与此无关。 “[Whatever] 无效,因为指定的应用程序 ID '597566643589666' 不允许使用域 'www.skydivemag.com'”,如果是 facebook 错误,那是因为您没有列出域。
    • 我以 Tumblr 为例,我在问 Tumblr 如何为同一个 App Id 配置多个域... '不工作)
    • 如果您对 Tumblr 有任何疑问,请寻求他们的支持。如果您的错误是 Facebook 错误,我很确定就是这样。试试看。
    • 你真的没有在听... 1) 你自己试试,你会得到错误'域必须来自以下之一:站点 URL、移动站点 URL、画布 URL、安全画布 URL , 页面标签 URL 或安全页面标签 URL。 2)我正在寻找如何在多个域上使用相同的应用程序 ID 而无需手动添加域。这一定是可能的,因为 Tumblr 做到了(因此示例)
    猜你喜欢
    • 2018-03-12
    • 1970-01-01
    • 2017-11-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-01-12
    • 1970-01-01
    相关资源
    最近更新 更多