【问题标题】:Do Facebook Like Buttons require an App ID?Facebook Like 按钮是否需要 App ID?
【发布时间】:2012-11-29 21:37:17
【问题描述】:

当转到所有社交插件的设置页面时,它们现在提供使用 APP ID 的示例代码。

http://developers.facebook.com/docs/plugins/

Like Button 和其他插件现在是否需要 APP ID?使用插件时不包含APP ID会怎样?

我查看了 Facebook 开发者博客并阅读了有关 Like Button Migration 的信息。我无法在此处或 FB Like Reference 中找到直接的答案。

【问题讨论】:

    标签: facebook button plugins facebook-like


    【解决方案1】:

    注意:

    这是一条过时的信息,官方facebook的行为有所改变。

    简单来说,答案是,看下面官方Facebook resource即可。

    注意:要做到这一点不需要应用ID,您必须在退出Facebook时访问上述页面。请看以下屏幕截图。

    【讨论】:

    • 简单地说,我正在看那个页面。 “获取代码”选项包括一个 APP ID。它有一个字段显示“此脚本使用您的应用程序的应用程序 ID”。没有 APP ID 的代码没有选项。页面上没有解释为什么要包含 APP ID。页面上没有说明如果您不使用 APP ID 会发生什么。所以说真的,你的回答根本没有帮助。
    • 我相信它指的是“fb:admins 或 fb:app_id - 页面管理员的 Facebook ID 或 Facebook 平台应用程序 ID 的逗号分隔列表”部分。至少,只包含您自己的 Facebook ID。 - 如果您想访问创建的开放图形对象,您可以在此处输入用户 ID - 如果没有,则不需要用户 ID 或应用 ID
    • Semsem,感谢您的帮助。虽然退出 Facebook 确实摆脱了 APP ID,但它并没有解决我的问题。您的建议只是一种解决方法,并不能解决问题。也就是为什么APP ID在那儿?为什么做出这个改变?这是什么意思?
    • 当您退出并点击“获取代码”时,Facebook 会要求您登录。
    • 目前,如果您在退出时尝试“获取代码”,它会强制您登录。
    【解决方案2】:

    正如 semsem 所说,简单的答案是“不,这不是必需的”......有一些方法可以让 appId 与“喜欢”按钮相关联。这是我的工作经验。我不是 Facebook 或 Open Graph 专家,所以 YMMV。

    为什么我们避免在按钮上使用 appId:

    我们正在提供一项服务,我们拥有一个网站(可以说是引擎),该网站提供向学生(客户)分发在线课程的服务。使用我们的服务向学生传播课程的讲师(也是客户)可以根据自己的意愿为网站打上烙印,并将他们的域映射到我们网站上为这些课程提供服务的部分。

    作为一个简化示例:我们从http://courses.example.com/instructor_name 提供服务,但我们希望学生通过http://www.instructors-domain.com/ 访问内容。任何课程都将是基本 URL 之外的子目录。

    将“赞”按钮与我们的 Facebook 应用程序相关联会禁止任何跨域恶作剧。虽然这样做有正当理由,但它不适用于我们公司所处的位置和产品发展。所以我们需要找到一种解决方法。

    我们想让人们“喜欢”一门课程,让“故事”指向网络上的适当位置,以及进行一些自定义(例如,“NAME 喜欢一个在线课程在 FBAppName 上”)。我们基本上做到了这一点。我们失去了一些我们认为在进化过程中可以接受的功能。

    它的短处

    我使用了 iframe 版本的 Facebook“赞”按钮,由相应的 Facebook 开发人员页面指定(有关链接,请参阅 semesm 对链接的回答,我没有得到任何代表)。我拿了他们的代码 sn-p 并手动删除了 iframe src 中的 appId 查询字符串。

    在“喜欢”页面本身(与“喜欢”按钮相同的页面)中,我使用了 Open Graph 元标记包括来指定 appId。 (这些标签被指定:fb:app_id、og:type、og:url、og:site_name、og:title、og:description、og:image。)

    og:type 是我们的自定义类型,形式为“namespace:app_custom_object_name”。

    失败的方法

    我的第一次尝试是使用我理解的首选方法,即开发人员“点赞按钮”页面的“获取代码”部分中的“HTML5”选项卡。我尝试了他们的方法从适当的位置剥离 appId。这种方法被证明是无效的。

    如果域与 Facebook 应用中的匹配,则不会有“喜欢”按钮。

    如果域匹配,就会出现“喜欢”按钮。但是,实际“喜欢”某些东西需要点击 3 次。第一次单击将“赞许”图标更改为普通锚点,其中包含一个没有明显意义的单词(我忘记了单词是什么)。第二次单击将打开登录/授权窗口以使用我们的应用程序。第三个实际上提出了现代花哨的“喜欢”框,您可以在其中输入评论。我没有找到解决这种行为的方法。

    请注意,当我以这种方法在适当的域上指定 appId 时,它会按预期工作(尽管与我们期望的行为不一致)。

    我没有尝试“like-button”页面的“Get Code”部分的其他两个选项。

    知情猜测和谣言

    在我对此的研究中,我的总体印象是要求 appId 是 Facebook 未来的发展方向。谁知道旧方法是否会被贬值,可能永远不会,尽管我在文档中没有发现任何关于这种“遗留”行为的内容。这对我来说很有意义,因为他们提供的新产品和通过这种方法可用的高级跟踪。

    我看到有人认为以这种方式使用的“点赞”类似于二等公民……在某些方面被视为低人一等。在我自己的实验中,我发现完全指定的 appId(在“喜欢”按钮本身中)的行为与部分指定的 appId 不同,并且更易于访问和可预测(就 Open Graph 查询和我有限的 Facebook 测试的可见性而言) . (同样,我没有找到关于这方面的可靠文档,也没有努力完全理解这些差异。)

    愿此信息对其他人有所帮助。祝你好运!

    【讨论】:

    • 虽然这是一个非常可靠的答案,但它很长,不一定能回答 OP 的问题。最好让您的答案简短、简洁且易于一目了然地识别解决方案。此外,除非有参考文献支持,否则应忽略意见。
    • 这太苛刻了。答案以 TL;DR 开头并提供有用的信息。它太长了,不能成为一个 great 的答案,但我认为它不值得被否决。欢迎使用 StackOverflow、FlyDanoFly,感谢您为第一个答案付出的巨大努力!
    • 不苛刻。时间就是金钱。例如,他的网站做什么完全不相关
    【解决方案3】:

    所以,我只是尝试了 sємsєм 方法,正如 cmets 所说:Facebook 要您登录以获取代码,如果您有应用程序,则必须选择一个。
    但如果你不这样做,它会给你一个没有任何应用参考的代码。

    所以当你得到一个代码时——无论你选择任何应用程序——你只需要删除 .js URL (&appId=##############) 中的 appId 参数,你就得到了(对于最新的 HTML5 代码,第 6 行) :

    js.src = "//connect.facebook.net/en_US/all.js#xfbml=1";
    

    div 元素的代码没有改变。

    【讨论】:

    • 当我这样尝试时,all.js 会抛出此错误:“无效的应用程序 ID:必须是表示应用程序 ID 的数字或数字字符串。”
    • 如果您不想创建应用程序 ID,我想要付出代价。但仍然可以正常工作。请注意,它是一个用户 ID(带有 meta og)——developers.facebook.com/tools/debug
    • 这在 IE8 中对我来说实际上是崩溃的......如果没有提供 App ID,分享按钮甚至不会出现。非常令人沮丧。
    • 由于sn-p的代码是HTML5,我想如果你想支持IE8,你必须使用iframe sn-p。它也坏了吗?
    【解决方案4】:

    我只是在没有 appID 的 iframe 标记中使用 URL 代码,它可以正常工作,

    这是一个例子:

    <iframe src="http://www.facebook.com/plugins/like.php?href=<%=request.original_url%>&width&layout=button_count&action=like&show_faces=false&share=false&height=35&appId=" frameBorder="0" width="150" height="25">
    </iframe>
    

    【讨论】:

      【解决方案5】:

      根据Facebook's Social Plugins FAQ

      • Web:如果您在 Web 上使用社交插件,则无需创建 Facebook 应用程序来集成社交插件。
      • iOS/Android:如果您在 iOS 或 Android 应用中使用社交插件,则需要创建 Facebook 应用并将其与您的应用标识符相关联。

      看来官方的回答是只有iOS/Android才需要。

      【讨论】:

      • 我看到“网络:如果您在网络上使用社交插件,则需要拥有 Facebook 开发者帐户才能获得应用 ID。”。再次“需要”。这可能是最近的变化吗?为什么 100% 的答案都是错误的?
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-05-27
      • 1970-01-01
      • 2014-10-23
      相关资源
      最近更新 更多