友達一覧を取得するには、
DataRequest.newFetchPeopleRequest()
を使うみたい。
さて、このリクエストのサーバ側の処理は、
newFetchPersonRequestで触ったPersonService.getPeople()
らしい。
とりあえずは、ガジェットを書いてみる。
newFetchPersonRequestの第一引数はidSpec。
第二引数は、要求に渡すパラメータ。
だそうで。
idSpecはidSpecオブジェクト。
要求に渡すパラメータというのは、意味不明。
要求に渡すといわれても、さっぱりわからないので、サンプルを見る。
で、例によって、gooのディベロッパーキッチンをみて、書いてみた。
<?xml version="1.0" encoding="UTF-8"?>
<Module>
<ModulePrefs title="友達一覧取得">
<Require feature="opensocial-0.8" />
<Require feature="dynamic-height" />
</ModulePrefs>
<Content type="html" view="home,profile,canvas"><![CDATA[
<div id='friends_list'></div>
<script type="text/javascript">
function requestGetOwnerProfile() {
var params = {};
params[opensocial.DataRequest.PeopleRequestFields.PROFILE_DETAILS] = [
opensocial.Person.Field.ID,
opensocial.Person.Field.NICKNAME,
opensocial.Person.Field.THUMBNAIL_URL,
opensocial.Person.Field.PROFILE_URL
];
var req = opensocial.newDataRequest();
var idSpecParam = {};
idSpecParam[opensocial.IdSpec.Field.USER_ID] = opensocial.IdSpec.PersonId.OWNER;
idSpecParam[opensocial.IdSpec.Field.GROUP_ID] = opensocial.IdSpec.PersonId.FRIENDS;
var idSpec = opensocial.newIdSpec(idSpecParam);
req.add(req.newFetchPeopleRequest(idSpec, params), "get_friends");
req.send(handleRequestGetFriendsProfile);
};
function handleRequestGetFriendsProfile(data) {
var friends = data.get("get_friends");
if (friends.hadError()) {
//Handle error using viewer.getError()...
document.getElementById('friends_list').innerHTML = 'エラーだよーん';
return;
}
var data = friends.getData();
var out = document.createElement('ul');
data.each(function(friend) {
var li = document.createElement('li');
var thumbnailUrl = friend.getField(opensocial.Person.Field.THUMBNAIL_URL);
li.innerHTML = '<img src="'+thumbnailUrl+'" />'+friend.getNickname();
out.appendChild(li);
});
docuemnt.getElementById('friends_list').appendChild(out);
// 自動調節
gadgets.window.adjustHeight();
};
gadgets.util.registerOnLoadHandler(requestGetOwnerProfile);
</script>
]]>
</Content>
</Module>
多分、こんな感じでよいんだろうけど、
エラーだよーんって表示される。
My Shindig環境ではまだサーバ側を実装していないので、
動かない。(java.lang.UnsupportedOperationExceptionが投げられてる。)
サーバ側実装はこれから。
.
0 コメント:
コメントを投稿