Получить местоположение друзей из Facebook с помощью fb_graph Ruby gem
Я пытаюсь найти местоположение всех друзей пользователя, используя gem: fb_graph. (версия 1.7.2)
Мои разрешения: publish_stream, read_friendlists, offline_access, friends_location, user_location
Я уже аутентифицировал пользователя и сохранил токен автономного доступа и его идентификатор на Facebook.
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, он говорит, что у меня есть доступ к местоположениям друзей:
Моя проблема в том, что когда я пытаюсь найти местоположение моих друзей, оно всегда возвращается ноль. У меня правильно настроены разрешения, и я знаю, что местоположение не должно быть нулевым для всех.
У кого-нибудь есть какие-либо предложения или указания о том, как найти друзей?
Спасибо!
2 ответа
Так что я в состоянии получить необходимую мне информацию. Вы должны вызывать 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 блокируют это? Или, возможно, все настройки конфиденциальности ваших друзей блокируют это?