如何以编程方式获取FB的数量

时间:2013-04-20 14:06:46

标签: ruby-on-rails koala

在Rails应用程序中使用Koala,我需要获取动态页面的Facebook赞的总数。

例如,如果有用户模型,我想获取每个用户的显示页面的喜欢数量,并将其存储在User.likes属性中。

我面临两个挑战:

  1. 考拉get_object方法需要Facebook UID。如何从其网址获取网页的UID?

  2. 使用Facebook开放图浏览器,哈希似乎不包括喜欢的数量?如何从打开的图表中访问喜欢的数量?

1 个答案:

答案 0 :(得分:0)

我最终设法解决了这个问题的两个部分。最后,我完全放弃了考拉的get_object,直接进入了开放图表。

首先,我需要在我的应用中找到代表感兴趣页面的开放图形对象。我在http://graph.facebook.com.?ids=http://my.app.com/user/xx找到了这个。

这返回了一个我需要解析的json对象。

最后,我需要从json对象访问正确的键/值。

所以把这一切都放在我的用户模型中

class User
  def facebook_likes
    user_url = UrlGenerator.new.user_url(self)  
    #UrlGenerator is a custom module that allows  
    #access to Rails route helpers in the model, 
    #no doubt some will consider this bad practice but
    #in this case I believe it is justified
    graph_url = "https://graph.facebook.com/?ids=#{user_url}"
    graph_object = JSON.parse( open( graph_url ).read )
    likes = graph_object["#{UrlGenerator.new.candidate_url(self)}"]["shares"] || 0 #returns 0 if no likes found
  end
end

如果有更好的方法,我愿意接受建议