1

我创建了一个音乐发现网络应用程序,我正在尝试与 Facebook 集成。前端本质上是一种使用 HTML5 画布的交互式体验,这意味着它全部存在于一个页面中。

我有一些存在于画布上的 html 代码来显示类似 facebook 的按钮。这个赞按钮对应于当前在画布应用程序中查看的歌曲。使用 jquery,我正在动态更改 的hreffb:like效果很好。同样,我正在使用window.history.pushState().

这很好用,除了单击“赞”按钮时打印在用户提要上的消息始终与加载的原始页面有关(也就是没有加载任何歌曲的 web 应用程序)。因此,我开始考虑使用 OpenGraph 来更改所述消息。

根据 facebook 上的类似按钮页面:

Facebook 什么时候抓取我的页面?

Facebook 需要抓取您的页面以了解如何在网站周围显示它。

Facebook 每 24 小时抓取一次您的页面,以确保属性是最新的。当 Open Graph 页面的管理员单击 Like 按钮以及将 URL 输入 Facebook URL Linter 时,该页面也会被抓取。Facebook 会观察您 URL 上的缓存标头 - 它会按优先顺序查看“过期”和“缓存控制”。但是,即使您指定更长的时间,Facebook 也会每 24 小时抓取一次您的页面。

如上所述,我现在正在创建自己的 url,每次更改歌曲时都会动态更改(无需重新加载站点)。我可以相对轻松地重新编码我的服务器,以便如果有人请求其中一个 URL,返回的 HTML 文件将包含与相关歌曲对应的元标记。让我们假设我这样做并编写了一个脚本来将所有这些 url 卷曲到 facebook。如果用户现在在我的 web 应用程序上单击与给定歌曲相对应的点赞按钮,该消息是否会对应于之前被 facebook 抓取的元标记,还是只是我目前收到的常规消息具有误导性?

最好的,
萨米

PS如果没有人知道这个问题的答案,我明天会把所有的代码都写出来让大家知道。

PPS 在相关说明中,是否有人知道是否使用 OpenGraph 更改点赞按钮单击的文本是否需要将scope="public_actions"属性设置为fb:likeHTML 代码中的元素?

4

1 回答 1

1

你在做什么没有问题,你只需要做两件事:

  1. 让服务器为用户可以共享的每个 url 返回正确的 og 元数据。

  2. 动态改变like按钮容器数据后,需要调用FB.XFBML.parse方法。我不确定如果您只更改href属性它将如何工作,我建议您从 dom 中完全删除 like 按钮,插入一个新的 fb:like 然后调用FB.XFBML.parse

于 2012-05-16T08:08:49.257 回答