mixiアプリをインストールしたマイミク同士で遷移するUIのサンプルコード
- OWNERのプロフ画像とニックネームを表示
- アプリをインストールしているマイミクの一覧と各自をOWNERとしたアプリへ遷移するボタン
動作はchrome4.0で確認
js
function init() { var req = opensocial.newDataRequest(); req.add(req.newFetchPersonRequest(opensocial.IdSpec.PersonId.OWNER), 'owner'); req.add(req.newFetchPersonRequest(opensocial.IdSpec.PersonId.VIEWER), 'viewer'); var params = {'userId':'VIEWER', 'groupId':'FRIENDS'}; var friendsIdSpec = opensocial.newIdSpec(params); var params2 = {}; params2[opensocial.DataRequest.PeopleRequestFields.FILTER] = opensocial.DataRequest.FilterType.HAS_APP; req.add(req.newFetchPeopleRequest(friendsIdSpec,params2), 'viewerFriends'); req.send(function(data) { if(data.hadError()) { return;} // OWNER情報 var ownerItem = data.get('owner'); if(ownerItem.hadError()) {alert(ownerItem.getErrorMessage());return;} var owner = ownerItem.getData(); var thumbnailUrl = owner.getField('thumbnailUrl'); var ownerName = owner.getDisplayName(); document.getElementById('thumbnailURL').innerHTML = '<img src="' + thumbnailUrl + '" />' + ownerName + 'さん'; // VIEWER var viewerItem = data.get('viewer'); if(viewerItem.hadError()) { return;} var viewer = viewerItem.getData(); // VIEWER FRIENDS var viewerFriendsItem = data.get('viewerFriends'); if(viewerFriendsItem.hadError()) {return;} var viewerFriends = viewerFriendsItem.getData().asArray(); viewerFriends.push(viewer); var ul = document.createElement('ul'); for(var i = 0; i < viewerFriends.length; i++) { var friend = viewerFriends[i]; var button = document.createElement('button'); button.appendChild(document.createTextNode(friend.getDisplayName() + '(' + friend.getId() +')')); button.setAttribute('name', friend.getId()); button.onclick = function() { var canvas = gadgets.views.getSupportedViews()['canvas']; alert(this.getAttribute('name')); gadgets.views.requestNavigateTo(canvas, null, this.getAttribute('name')); }; var li = document.createElement('li'); li.appendChild(button); ul.appendChild(li); } document.getElementById('friends').appendChild(ul); gadgets.window.adjustHeight(); }); }; gadgets.util.registerOnLoadHandler(init);
- インストールしたマイミクのみ取得するには、FILTERにHAS_APPを持つオブジェクトを作成し、newFetchPeopleRequest()の第二引数に渡す。
- viewerのfriendsには自分が含まれないため、asArray()で配列に変換し、push()でviewerを追加する。
requestNavigateTo()の第三引数opt_paramsに渡すPersonIdはbuttonのname属性にsetAttribute()で持たせた。
設定、取得は容易になるが、あまり好ましくないだろうか。