Graph API를 사용하는 Facebook 'Friends.getAppUsers'


87

Friends.getAppUsers내 애플리케이션을 승인 한 현재 사용자의 친구 목록을 가져 오기 위해 이전 REST API 호출 을 사용하는 애플리케이션이 있습니다.

문서를 읽었습니다. Graph API로 어떻게해야합니까? 이것의 예는 무엇입니까?

답변:


119

나는 잠시 동안 주변을 검색했는데 Graph API를 사용하여 이것이 가능하지 않다고 생각했습니다.

그러나 비슷한 질문을 게시했습니다. 내 애플리케이션을 사용하는 사용자의 친구를보기 위해 이전 GetAppUsers 호출을 대체합니까? , 내가 사용하고 있던 특정 API에 대해 훌륭한 일반적인 답변을 받았습니다.

https://graph.facebook.com/me/friends?fields=installed

또는 더 일반적으로

https://graph.facebook.com/{user id}/friends?fields=installed

그러면 응용 프로그램을 사용하는 친구에 대한 추가 필드 "installed = true"와 함께 모든 친구가 반환됩니다.

다음은 그래프 API 탐색기 에서 작동합니다 .


4
네; 나는이 답변으로 질문에 대답 : facebook.stackoverflow.com/questions/7956639/...
IGY

2
이 쿼리는 어떤 응용 프로그램에 대해 설치를 확인합니까?
iOS Monster

3
완전성을 위해 다른 필드 (예 : 이메일, 생일 등)를 사용하지 않는다고 가정하면 /me/friends?fields=id,name,installed필드 순서 및 ?fields=정의 되지 않은 상태 로 반환되는 표준 정보를 보존합니다 (2012/12/05에 해당).
plasmid87

5
이 글을 쓰는 시점에서이 쿼리는 모든 친구를 반환합니다 ( installed참이 아닌 경우에도). installed각 사용자에 대해 필드가 존재 하는지 수동으로 확인해야합니다 .
Pankaj Bhambhani

예, 맞습니다. 모든 친구를 확보하고 어떤 친구가 플래그를 설치했는지 확인해야한다는 점을 명확히하기 위해 답변을 수정했습니다.
Alex

27

이것은 FQL로 수행 할 수 있습니다.

SELECT uid FROM user
WHERE uid IN (SELECT uid2 FROM friend WHERE uid1 = ?)
AND is_app_user = 1

QED!


1
원래이 쿼리를 사용했고 지연 시간 때문에 이제 그래프 API를 통해 모든 친구를 얻은 다음 대신 내 애플리케이션 측에서 필터링합니다.
Richard

지연 시간에 대해 자세히 설명해 주시겠습니까? 쿼리가 응답하는 데 너무 오래 걸리나요? 나는 약 300 명 이상의 친구와 함께 FB 계정으로 테스트를 해왔고 응답 시간은 2 ~ 4 초 였는데, 이는 그리 나쁘지 않은 IMO가 아닙니다.
loungerdork

1
네, 대략 제가 본 것입니다. 그래프 API는 400 명 이상의 친구를 반환하는 데 약 500ms가 걸리므로 모두 가져 와서 필터링하는 것을 선호합니다.
Richard

3
당신은 또한 사용할 수있는 me()대신의?
philfreo 2011 년

8

예, Graph API는 끔찍하게 문서화되어 있습니다. "application" 유형에 대한 문서는 없지만 문서에서 애플리케이션의 정보를 참조합니다.

https://graph.facebook.com/2439131959

그렇다면 Group 구문을 사용하여 애플리케이션의 멤버를 가져올 수 있습니까?

https://graph.facebook.com/2439131959/members

테스트하려면 인증 된 세션이 필요합니다. 그렇지 않으면 Facebook이 FQL을 사용하여 쿼리를 직접 보내도록 요청하는 것 같습니다.

http://developers.facebook.com/docs/reference/fql/application

https://api.facebook.com/method/fql.query?query=QUERY를 가져와 FQL 쿼리를 실행할 수 있습니다 . format 쿼리 매개 변수를 사용하여 응답 형식을 XML 또는 JSON으로 지정할 수 있습니다.

따라서 FQL 쿼리를 전달하여 애플리케이션에 대한 정보를 얻을 수 있습니다.


2
으. 그래프 API 로의 빛 전환은 내가 원래 바랬던 두통이 더 많은 것 같습니다.
Richard

4
FQL을 사용하여 필요한 모든 작업 (게시 제외)을 수행하는 것이 더 쉬울 것입니다. 최악의 경우 Graph API는 필요한 모든 것을 제공하지 않으며, 기껏해야 그렇게하는 방법을 찾기가 매우 어렵습니다.
Daniel Schaffer

6

이전 REST API :

$facebook->api_client->friends_getAppUsers();

새로운 그래프 API :

$facebook->api(array('method' => 'friends.getAppUsers'));

4
이 SDK 메서드 호출은 내부적으로 이전 나머지 API를 사용합니다. 그것은 그래프 API가 아닙니다 :-(
Richard

5

저는이 문제에 대해 많은 조사를했습니다. 내가 알 수 있듯이 Friends.getAppUsersGraph API를 사용하는 방법은 없습니다 . Facebook에서 제공하는 최신 SDK는 모두 이전 REST API를 사용하여 애플리케이션을 사용하여 친구를 얻습니다.


6
이것은 꽤 오래되었고 더 이상 정답이 아닙니다. 상단에서 Alex의 답변을 확인하십시오.
Bach

정답이 아닐 수도 있지만 OP의 답이고, 자아 때문에 정답을 정답으로 표시하는 것보다 자신을 찬성하는 것이 분명 낫습니다.
Ajax

4

restFB를 사용 하여 다음을 수행했습니다 (지침에 대해 Igy / Alex에게 감사드립니다). Facebook은 사용자가 설치된 경우 "installed"= true 인 친구 ID 배열을 반환합니다 ( 여기에서 볼 수 있음 ).

먼저 User 클래스를 확장하고 installed필드를 추가 합니다.

import com.restfb.Facebook;
import com.restfb.types.User;

public class InstalledUser extends User {

    @Facebook
    private boolean installed;

    public InstalledUser() {        
    }

    public boolean getInsatlled() {
        return installed;
    }
}

다음으로 DefaultFacebookClient를 사용합니다.

FacebookClient facebook = new DefaultFacebookClient(pFacebookAccessToken);
Connection<InstalledUser> installedFacebookUsers = facebook.fetchConnection("/" + pFacebookId + "/friends", InstalledUser.class, Parameter.with("fields", "installed"));        
for (List<InstalledUser> friends : installedFacebookUsers) {
    for (InstalledUser friend : friends) {
        if (friend.getInsatlled()) {
            // Add friend.getId() to a list of ID, or whatever
        }
    }
}

1

해결 방법은 직접 필터링하는 것입니다. 아마도 애플리케이션에 등록한 사용자의 모든 uid가 자신의 데이터베이스에있을 것입니다. 따라서 먼저 모든 사용자의 친구의 uid를 가져오고 데이터베이스에서 일치하는 uid가있는 사용자를 선택하십시오.

새로운 Facebook Graph API 프로그램은 매우 제대로 실행되지 않고 충분히 생각하지 않은 것 같습니다. 그들이 성숙되기 전에 페이스 북 f8 용으로 게시하기 위해 서두른 것 같고 , 이전에 사용할 수 있었던 많은 기능이 누락되었습니다.


0

새 Graph API에서 이전 REST API를 계속 호출 할 수 있습니다. 그것은 전적으로 유효합니다.

다른 방법은 FQL을 사용하여 응용 프로그램 사용자의 친구를 얻는 것입니다.

Graph API 만 사용하여이를 수행하는 방법이 있는지 잘 모르겠습니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.