使用fb_graph Ruby gem从Facebook检索朋友位置

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

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

我已经对用户进行了身份validation并存储了脱机访问令牌及其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

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

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

谢谢!

所以我能够获得我需要的信息。 你必须在每次通话后调用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) 

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