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()で持たせた。
設定、取得は容易になるが、あまり好ましくないだろうか。