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

时间:2011-05-03 04:02:44

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

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

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

我已经对用户进行了身份验证并存储了离线访问令牌及其脸谱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

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

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

谢谢!

2 个答案:

答案 0 :(得分:3)

所以我能够获得我需要的信息。您必须在每次通话后拨打获取,所以

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)

答案 1 :(得分:0)

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