[facebook] Graph API를 사용하는 Facebook ‘Friends.getAppUsers’

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

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



답변

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

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

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

또는 더 일반적으로

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

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

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


답변

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

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

QED!


답변

예, 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 쿼리를 전달하여 애플리케이션에 대한 정보를 얻을 수 있습니다.


답변

이전 REST API :

$facebook->api_client->friends_getAppUsers();

새로운 그래프 API :

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


답변

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


답변

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
        }
    }
}


답변

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

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