2011-10-31 2 views
10

오래된 REST API에서 대단히 유용한 호출은 Friends.getAppUsers입니다. 이 호출은 응용 프로그램을 사용중인 모든 친구를 반환합니다. 슬프게도 이것은 Open Graph API에 없습니다. 그것에 대해 좋은 스택 오버플로 게시가 있습니다 Facebook 'Friends.getAppUsers' using Graph API.이전 GetAppUsers를 대신하여 내 애플리케이션을 사용하는 사용자의 친구를 볼 수 있습니까?

그러나 Graph API explorer에서 볼 수있는 것처럼 FQL 호출을 만들기 위해 Graph API를 사용할 수 있습니다.

fb.GetAsync("fql/?q=SELECT uid,username, is_app_user FROM user WHERE uid IN(SELECT uid2 FROM friend WHERE uid1 = me()) AND is_app_user=1"); 

그러나,이 오류를 반환했습니다 :

나는 어쩌면 내가는 C# SDK를 사용하여 다음 전화를 걸 수 있다고 생각했다. 기존 C# SDK를 사용하여 GetAppUsers 호출의 부족을 해결할 수있는 방법이 있습니까?

답변

30

users.isAppUser에 대한 교체 API 호출이 또한 friends.getAppUsers 대체의 확장에 의해 있도록 사용자의 친구를 위해 작동 /me/?fields=installed 에 대한 간단한 호출입니다.

나는 이것을 App Access Token과 일반 User Access 토큰으로 시도했다. /{user id}/friends?fields=installed에 대한 API 호출을 확인 - 반환은 다음과 같습니다

{ 
    "data": [ 
    { 
     "id": "{FRIEND_UID_1}" 
    }, 
    { 
     "id": "{FRIEND_UID_2}" 
    }, 
    // etc... 
    { 
     "installed": true, 
     "id": "{FRIEND_UID_X}" 
    } 

가 //

당신이 결정하기 위해 installed:true의, therof 존재 또는 부재를 사용할 수 있습니다 싹둑

의 어떤 사용자의 친구가 앱을 사용합니다.

어떤 이유로 든 작동하지 않는 경우, 자신의 데이터베이스에 이미 앱 사용자의 uid 목록이 없습니까? 사용자의 전체 친구 목록을 검색하여 앱을 사용중인 사용자의 기록과 비교할 수 있습니다.

+0

원래 질문의 FQL은 기본적으로 멋지게 보입니다. 어떤 오류가 있었습니까? 매우 비슷한 것을 사용하여 답을 얻을 수도 있으며, 형식을 지정할 때 문제가 될 수도 있습니다. – Igy

0

경로에 문제가 있습니다.

uid1 = me()) AND is_app_user=1 

= 제대로 인코딩되지 않았습니다. =%3d으로 바꿉니다.

uid1 %3d me()) AND is_app_user%3d1 

이것은보기 흉한 것 같습니다. 당신이 v5.2.1를 사용하는 이전, Query는 기존 REST API를 사용할 경우

fb.QueryAsync("SELECT uid,username, is_app_user FROM user WHERE uid IN(SELECT uid2 FROM friend WHERE uid1 = me()) AND is_app_user=1"); 

: 그래서 더 좋은 방법은 Query/QueryAsync 방법을 사용하는 것입니다. v5.3.1 이후 버전을 사용하는 경우 Graph API를 사용하여 FQL 쿼리를 실행합니다.

관련 문제