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 탐색기 에서 작동합니다 .
/me/friends?fields=id,name,installed
필드 순서 및 ?fields=
정의 되지 않은 상태 로 반환되는 표준 정보를 보존합니다 (2012/12/05에 해당).
installed
참이 아닌 경우에도). installed
각 사용자에 대해 필드가 존재 하는지 수동으로 확인해야합니다 .
이것은 FQL로 수행 할 수 있습니다.
SELECT uid FROM user
WHERE uid IN (SELECT uid2 FROM friend WHERE uid1 = ?)
AND is_app_user = 1
QED!
me()
대신의?
예, 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 쿼리를 전달하여 애플리케이션에 대한 정보를 얻을 수 있습니다.
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
}
}
}