【问题标题】:How to "Like" facebook content externally如何在外部“喜欢” Facebook 内容
【发布时间】:2011-01-31 15:55:11
【问题描述】:

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

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

我还有一个网页,上面有几乎相同的信息。在这个网页中,我有一个 facebook like 按钮,以便用户可以喜欢这里看到的页面:

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

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

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

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

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

非常感谢:)


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

我可以再次补充一点,我需要放置在标签中的链接,而不仅仅是为了能够检索喜欢和 cmets 等的计数。我还在 facebook 开发者论坛上发起了一个主题here但没有人回复解决方案。

再次感谢。


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

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

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

【问题讨论】:

  • 你在使用 OpenGraph 吗?
  • 不,我只是在使用 标签。
  • 至于您的第二次更新 this 只是 window 对象,所以如果您可以获取相关的窗口对象,那就没问题了。
  • 那不要求每次点赞时都打开 facebook 吗?我做了一些谷歌搜索,我想我不太清楚你的意思......
  • 所以您希望用户在喜欢您网站上的图片(或图片页面)时实际上喜欢 Facebook 上的同一张图片?

标签: javascript facebook facebook-like


【解决方案1】:

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

也就是说,您可以构建自己的点赞按钮。使用 Graph API,您可以使用 /me/feed 从您自己的提要中提取对象。最简单的可能是使用提要中的图像;如果您托管图像,则需要一个映射表回馈上的对象。您提要中的每个对象都将有一个 Like 计数器。

更新

重新阅读帖子,您似乎不希望用户必须登录。可以从服务器端调用 Graph API。当您访问自己的提要时,您只需为您的应用授予对您自己的提要的离线权限,当前用户无需登录。

更新 2

看来/POST_ID/likes 仅适用于帖子 - 我在其他任何内容上都得到“应用程序必须在白名单中”。

【讨论】:

    【解决方案2】:

    恐怕你想要的是不可能。一个快速的“证据”:

    <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>
    

    这行不通!

    我认为您不应该费心寻找“解决方法/hack”或尝试检查和调试 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 的东西,但我认为您不想这样做。

    【讨论】:

      【解决方案3】:

      我想指出,这是一个非常混乱的想法混搭,而不是一个完整的解决方案。我建议你坐下来,在Facebook Docs 上打开你的脑袋一会儿。

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

      所以,您需要做的是,每次访问您的网页时,从该特定 页面 中调用该特定 相册 中的特定 照片已加载,因此,您将能够拉取 Facebook 上收到的所有 cmets 和喜欢的这张照片。

      我想说解决这个问题的最好方法是在你想要的特定picture 上发送initialize the JavaScript SDKperform an FQL query,然后获取数据。

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

      【讨论】:

      • 我在使用图形 API 时没有任何问题,我对此非常了解。我没有从 facebook 检索图像,它恰好是相同的图像。使用图形 api 会迫使用户“与 facebook 联系”,这不是我的目标,我只想要喜欢的数量,就像我可以使用 facebook 上的任何其他“喜欢”页面一样。
      • @Adam-这不是真的。查询有关图像的数据不需要用户提供任何内容。
      • 但是从图表 api 中检索喜欢的数量,或者实际上任何数据并不能告诉我需要在“”脚本中放置哪个链接。我已经尝试了所有可用于图像的链接,但都失败了。
      【解决方案4】:

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

      如果您查看源代码,您可以看到(喜欢它):

      <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>
      

      如果你能以某种方式根据你应该排序的图像 ID 计算出 URL 是什么,TMK 似乎 FB 正在使用某种自定义库来喜欢图像的 ID。

      【讨论】:

      • 似乎
      【解决方案5】:

      使用like插件:

          <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 查询 like 表。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2011-11-06
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-06-26
        • 1970-01-01
        相关资源
        最近更新 更多