【问题标题】:Retrieve friends locations from Facebook using fb_graph Ruby gem使用 fb_graph Ruby gem 从 Facebook 检索朋友位置
【发布时间】:2011-05-03 04:02:44
【问题描述】:

我正在尝试使用 gem 检索用户所有朋友的位置:fb_graph。 (版本 1.7.2)

我的权限是:publish_stream,read_friendlists,offline_access,friends_location,user_location

我已经验证了用户并存储了离线访问令牌和他们的 facebook id。

user = User.find_by_email("person@email.com")
facebook_user = FbGraph::User.fetch(user.facebook_identifier, :access_token => user.facebook_access_token)
facebook_user.friends.map(&:location) => [nil, nil...]

当我在 Facebook 中检查权限时,它说我可以访问朋友位置:

http://grab.by/a1Qm

我的问题是,当我尝试获取朋友的位置时,它总是返回 nil。我的权限设置正确,而且我知道每个人的位置都不应该为零。

有人对如何获取朋友位置有任何建议或指示吗?

谢谢!

【问题讨论】:

  • 我不明白这个问题。从你的问题的措辞来看,你似乎没有提到你遇到了什么问题。
  • 糟糕...抱歉,我累了就不应该发帖给 SO 了。我编辑并澄清了。

标签: ruby-on-rails ruby facebook facebook-graph-api


【解决方案1】:

所以我能够获得我需要的信息。您必须在每次调用后调用 fetch,所以

user = User.find_by_email("email@domain.com")

facebook_user = FbGraph::User.fetch(user.facebook_identifier, :access_token => user.facebook_access_token)
friends = facebook_user.fetch.friends
friends.each do |friend|
  location = friend.fetch.location
  puts location.try(:name)
end

这为我提供了我想要的数据,但是它对所有内容进行迭代并为每条数据进行单独调用相当慢,因此我重构为仅使用直接 FQL 来返回我需要的所有数据。

friend_data = FbGraph::Query.new("SELECT uid, first_name, last_name, pic_square, current_location FROM user WHERE uid in (SELECT uid2 FROM friend WHERE uid1='#{user.facebook_identifier}')").fetch(user.facebook_access_token)

【讨论】:

    【解决方案2】:

    API 权限不会覆盖用户的隐私设置。您的 Facebook 用户隐私设置是否可能阻止此操作?或者也许你所有朋友的隐私设置都阻止了这一点?

    【讨论】:

    • 嗯,这似乎不太可能。我尝试使用另一个拥有 600 多个朋友的帐户,但该帐户也没有返回任何位置。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-08-22
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多