メモ代わり。てきとーに。 いや、ですからてきとーですって。 2年前ぐらいにPythonあたりでメールくれた方、ごめんなさい。メール紛失してしまい無視した形になってしまいました。。。

2009年7月18日土曜日

[Apache Shindig][お勉強][OpenSocial] メモ57 DataRequest.newFetchPeopleRequest(友達版)

友達一覧を取得するには、

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 コメント: