2011-05-03 1 views
2

보석을 사용하여 모든 사용자의 친구 위치를 검색하려고합니다 : fb_graph. (버전 1.7.2)fb_graph를 사용하여 Facebook에서 친구 위치 검색 Ruby gem

내 권한은 다음과 같습니다 publish_stream, read_friendlists, offline_access, friends_location, USER_LOCATION

이미 사용자를 인증하고 토큰 오프라인 액세스를 저장 한 자신의 페이스 북 ID입니다. 나는 시도하고 항상 전무를 반환 내 친구의 위치를 ​​얻을 때

http://grab.by/a1Qm

내 문제 : 나는 페이스 북 내에서 권한을 검사 할 때

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

내가 친구 위치에 액세스 할 수 말한다 . 권한 설정이 올바르게되어 있고 위치가 모든 사람에게 맞지 않아야한다는 것을 알고 있습니다.

아무도 친구 위치를 확인하는 방법에 대한 제안이나 조언이 있습니까?

감사합니다.

+0

나는이 문제를 이해하지 못한다. 귀하의 질문을 표현할 때 어떤 문제가 있는지 언급하지 않은 것 같습니다. –

+0

Woops ... 미안, 내가 피곤할 때 그래서 게시물을 작성해서는 안됩니다. 나는 편집하고 명확하게했다. – Nick

답변

3

그래서 나는 필요한 정보를 얻을 수있게되었습니다. 당신은 그러나 오히려 내가에 리팩토링 느린 모든 것을 반복 및 데이터의 각 부분에 대한 개별 통화를하고, 그래서

user = User.find_by_email("[email protected]") 

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) 
0

API 권한이 사용자의 개인 정보 설정보다 우선 적용되지 않습니다. 페이스 북 사용자의 개인 정보 보호 설정이이를 차단할 수 있습니까? 아니면 친구들의 개인 정보 보호 설정으로 모두 차단할 수 있습니까?

+0

흠, 그럴 것 같지 않습니다. 나는 600+ 명의 친구가있는 다른 계정으로 시도했으나 어느 위치도 해당 계정으로 돌아 오지 않았습니다. – Nick

관련 문제