如何在外部“喜欢”facebook内容

时间:2011-01-31 15:55:11

标签: javascript facebook facebook-like

所以我一直在玩像facebook一样的按钮,但我遇到了一个问题。我有一个关于我正在做的慈善工作的facebook页面:

http://www.facebook.com/Adam.Holmes.Climbs.Kilimanjaro

我还有一个网页上有相同的信息。在这个网页中,我有一个类似Facebook的按钮,以便用户可以像这里看到的页面一样:

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

现在我的问题是单独的按钮。在Facebook页面中,我添加了一些用户已经“喜欢”和评论等的图像。我现在已经在我的网页上放置了相同的图像,我想为每个图像添加一个类似Facebook的按钮,从而显示所有喜欢的内容图片在facebook上有。我已将许多不同的链接插入到类似按钮中,但它们似乎都不起作用。我试过a)页面的网址。 b)图像的网址。 c)操纵不同网址的随机位和蝙蝠。

我试图查看javascript源代码,但这对我的理解来说太复杂了。我知道从按钮调用函数fc_click()进一步调用另一个函数,不久之后我就迷路了,并且没有找到使用的url。

所以我想我的问题是,在“喜欢”脚本中放置的url是什么,以便我可以在facebook外部使用like按钮?

如果需要更多信息,请说明。

非常感谢:)


更新:我一直在尝试所有不同的组合或网址,但仍然没有运气。其中一个“赞”按钮的对象是图中的一个对象,即Here is the object I want to like.,但这些链接都不起作用。也许facebook限制了这一点,因为它很容易使用页面的网址,它工作正常,只是不是单个项目。

我可以再次添加我需要放置在标签中的链接,而不仅仅是为了能够检索喜欢和评论等的计数。我还在facebook开发者论坛上开始了一个主题{{3但是没有人回答过一个解决方案。

再次感谢。


更新2: 正如“Myles Gray”所指出的,代码实际上在HTML中呈现为:

<label onclick="this.form.like.click();">

我不确定是否有办法从外部页面访问表单,因为它没有正确的this引用。是否有人能够阐明是否可以做到这一点,如果可以的话,怎么做?当然,如果可以做到这一点,正确引用this将允许我在外部喜欢内容。

5 个答案:

答案 0 :(得分:2)

我不认为使用<fb:like>可以在一个不是页面的内容上获得类似Facebook的按钮。为了测试这一点,我在自己墙​​上张贴的照片上尝试了几件事。如你所知,没有一个URL有效。

那就是说,你可以建立自己喜欢的按钮。使用Graph API,您可以使用/me/feed从自己的Feed中提取对象。最简单的事情可能是使用Feed中的图像;如果您托管了图像,则需要将映射表格返回到Feed上的对象。您Feed中的每个对象都会有一个Like计数器。

<强>更新

重新阅读帖子,看起来您不希望用户必须登录。可以从服务器端调用Graph API。当您访问自己的Feed时,您只需要将您的应用提供给您自己的Feed的离线权限,并且当前用户无需登录。

更新2

似乎/POST_ID/likes仅适用于帖子 - 我得到“应用必须在白名单上”其他任何内容。

答案 1 :(得分:1)

我想指出,对于这个问题,这是一个非常混乱的想法,而不是一个完整的解决方案。我建议坐下来Facebook Docs开一会儿。

请查看here。如您所见,Facebook中的每个对象都是Graph API的一部分。因此,它拥有自己独特的ID属性。根据照片,您可以查看here并查看每张照片都有自己唯一的ID。

您需要做的是,每当您的网页从特定的相册中调用特定的照片 已加载,因此,您将能够提取所有评论并喜欢在Facebook上收到的这张照片。

我想说最好的解决方法是initialize the JavaScript SDKperform an FQL query关于您想要的具体picture,并获取数据。

现在 - 根据显示:由于facebook 没有有一个特殊的插件来显示外部网页上的照片,显示部分是棘手的部分。所有信息都在JSON对象中接收,您可以以任何方式显示该对象。我建议,为了使体验更具社交性,在Graph API中为每张照片创建一个类似按钮的照片。 Docs are here

答案 2 :(得分:1)

AFAIK Facebook使用内部统计计数器,该计数器以某种方式链接到photo.php,并附有照片ID和相册ID ......

如果你看一下你可以看到的源代码(喜欢它):

<label onclick="this.form.like.click();"><i class="img sp_29yryj sx_182771" title="Like this item"></i></label>

进一步(查看喜欢它的人):

<a href="/browse/?type=likes&amp;id=1516817795900" rel="dialog" ajaxify="/ajax/browser/dialog/?type=likes&amp;id=1516817795900" title="See people who like this item">16 people</a>

如果你能以某种方式弄清楚URL是基于你应该排序的图像ID,TMK似乎FB正在使用某种自定义库来喜欢图像的ID。

答案 3 :(得分:1)

我担心你想要的是 。快速“证据”:

<script src="http://connect.facebook.net/en_US/all.js#xfbml=1"></script>
<fb:like href="http://www.facebook.com/platform" show_faces="true" width="450"></fb:like>

这可以正常工作,但使用其Graph API解释:

<script src="http://connect.facebook.net/en_US/all.js#xfbml=1"></script>
<fb:like href="https://graph.facebook.com/19292868552" show_faces="true" width="450"></fb:like>

这不起作用!

我认为您不应该费心寻找“变通方法/黑客”或尝试检查和调试Facebook上的照片页面,因为即使如果您这样做了找到一种在外部使用类似功能的方法我很确定会让你陷入Facebook的法律问题!

现在我要做的是,监控用户“喜欢”你网站上的一张照片,并在LIKE按钮下面弹出一个或DIV,以鼓励他去照片页面在Facebook上也支持它(喜欢它)!

这可以通过使用edge.create事件来完成:

FB.Event.subscribe('edge.create', function(response) {
  // Encourage the user to support your cause in Facebook too!
  $("div_with_a_link_to_the_photo_page_on_facebook").show();

  // or using a dialog or whatever effect you like
  $("#facebook_support").dialog();
});

P.S:我在这里使用jQuery

另外,对于外部实际上喜欢facebook“对象”,你需要一个应用程序,比如我的回答here,但我认为你不想这样做。

答案 4 :(得分:0)

使用类似的插件:

    <div class="fb-like" data-href="**http://graph.facebook.com/[object_id]**" data-send="false" data-width="270" data-show-faces="false" data-colorscheme="dark" data-font="arial"></div> 

(只需输入您自己的对象ID)。我的问题是我无法弄清楚如何在不登录应用程序的情况下检测用户是否已经喜欢该对象(不仅仅是登录到fb)。

要执行此操作,您的应用需要extended_permissions,例如在这种情况下,它需要read_stream权限。一旦你有了,你可以使用fql查询类似的表。

相关问题