我正在尝试使用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内部检查权限时,它说我可以访问朋友位置:
我的问题是,当我尝试获取朋友的位置时,它总是返回零。我正确设置了权限,我知道每个人的位置都不应该为零。
是否有人对如何获取朋友位置有任何建议或指示?
谢谢!
答案 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用户隐私设置是否可能阻止此操作?或者你所有朋友的隐私设置都阻止了这个?