이번 글에서는 친구 목록을 가져오는 방법에 대해서 소개한다.
친구 목록 가져오기
친구목록을 가져오는 코드는 다음과 같다.
- var os = opensocial.Container.get();
- var req = os.newDataRequest();
- var params = {};
- params[opensocial.IdSpec.Field.USER_ID] = opensocial.IdSpec.PersonId.VIEWER;
- params[opensocial.IdSpec.Field.NETWORK_DISTANCE] = 1;
- var idspec = opensocial.newIdSpec(params);
- var opt_params = {};
- opt_params[opensocial.DataRequest.PeopleRequestFields.FIRST] = 20;
- opt_params[opensocial.DataRequest.PeopleRequestFields.MAX] = 100;
- opt_params[opensocial.DataRequest.PeopleRequestFields.SORT_ORDER] = opensocial.DataRequest.SortOrder.NAME;
- req.add(req.newFetchPeopleRequest(idspec, opt_params), "friends");
- req.send(function(respnse) {
- if (respnse.hadError()) {
- canvas.message.error("Error in getting friends");
- } else {
- var friends = respnse.get("friends").getData();
- onSuccess(friends);
- }
- });
이 중 핵심인 함수는 newFetchPeopleRequest()이다. 이 함수의 프로토타입은 다음과 같다.
- Object newFetchPeopleRequest(idSpec, opt_params)
첫 번째 파라미터는 idspec이다. idspec을 만들 때 NETWORK_DISTANCE 를 1로 지정해 주어서 USER_ID의 친구를 가져오도록 한다.
두 번째 파라미터 opt_params는 opensocial.DataRequest.PeopleRequestFields 이다. 이 파라미터로 가져올 친구 목록의 조건을 지정해 줄 수 있다. 파라미터에 대해 간단히 살펴보면,
FIRST : 가져올 친구들 중 첫 번째 친구의 index이다. 페이지네이션을 할 때 사용된다.
MAX : 가져올 친구들의 수이다. 100까지만 의미를 갖는다. 즉 한 번에 가져올 수 있는 친구는 100명이다.
SORT_ORDER : 어떤 순으로 가져올 것인지를 정한다. NAME 과 TOP_FRIENDS가 있다. TOP_FRIENDS는 사용자가 친구 목록에 대해 정한 우선순위이다.
FILTER : 친구들을 가져올 때 사용할 필터다. HAS_APP로 하면 이 애플리케이션을 설치한 사용자만 가져온다. 현재 MySpace에서는 응답이 좀 어의없이 온다. 버그인 듯 싶다.
PROFILE_DETAILS : 친구들을 가져올 때 친구의 어떤 항목을 가져올 지를 정한다. opensocial.Person.Field 필드의 값을 배열로 정해 주면 된다. 현재 MySpace에서는 이 파라미터를 사용할 수 없다. 사용하면 아무 일어나지 않는다.(ㅡ_ㅡ)
친구 목록을 가져올 때 궁금한 것 중 하나가 '어떤 친구가 이 애플리케이션을 설치하고 있는가?' 이다. 애플리케이션을 설치하지 않은 친구에게는 초대 메시지를 보내도록 유도하고 싶기 때문이다. opensocial 규격에는 opensocial.Person.Field.HAS_APP 를 이용해 이 정보를 줄 수 있도록 하고 있다. 그러나 안타깝게도, newFetchPeopleRequest로 가져오는 친구정보 중에는 HAS_APP가 없다.(MySpace의 버그같다.) 더구나 PROFILE_DETAILS을 사용할 수도 없다. FILTER를 사용하는 방법이 있는데, 응답이 좀 이상하다.(친구의 프로파일 URL이었던가..?) 난감하다.
친구 선택기
facebook에서는 개발자들을 위해 친구 선택기를 제공한다. 페이스북 애플리케이션을 개발할 때 편리하게 이용할 수 있다. MySpace에서는 쓸만한 친구 선택기가 없다.(못찾은 것일수도..) 그래서 간단하게 하나 만들어 봤다.
기능은 아주 단순한다.
- 친구 목록을 보여주고, 앞 뒤로 이동할 수 있다.
- 친구를 한명 선택할 수 있다.
- 이름으로 검색할 수 있다.
jQuery를 사용하고 있으며, opensocial API 0.8을 이용하고 있다. 다운로드
모듈화가 완전치 않고, 테스트가 충분하지 않아서 어디서나 잘 동작할는지 모르겠다. 하고자 하는 것은 애플리케이션이 시작되면서 모든 친구 목록을 가져온 후 그 목록에서 친구 선택을 하는 것이다.
다음과 같은 식으로 사용을 한다. per_page는 한 페이지에 보여질 친구들의 수이고, onSelect는 친구가 선택되었을 때 수행될 함수이다.
- <div id='friend_picker' />
- friend_picker.show("friend_picker", {
- per_page: 30,
- onSelect: function(friend) {
- // do something
- }
- });
스크린샷 한장.
'그 밖에.. > javascript' 카테고리의 다른 글
| MySpace 애플리케이션 개발하기 #6 (0) | 2009/04/14 |
|---|---|
| MySpace 애플리케이션 개발하기 #5 (0) | 2009/04/10 |
| MySpace 애플리케이션 개발하기 #4 (2) | 2009/04/03 |
| MySpace 애플리케이션 개발하기 #3 (0) | 2009/04/01 |
| MySpace 애플리케이션 개발하기 #2 (0) | 2009/03/29 |
| MySpace 애플리케이션 개발하기 #1 (0) | 2009/03/26 |
