正如 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 测试的可见性而言) . (同样,我没有找到关于这方面的可靠文档,也没有努力完全理解这些差异。)
愿此信息对其他人有所帮助。祝你好运!