OpenSocialTutorial-4

IDtail.com API

Jump to: navigation, 찾기

[편집] 방문자 정보 보기

앞 장에서 살펴본 주인 정보는 Person 개체의 속성을 통해서 알 수 있습니다. 이 속성은 현재 접속해 있는 방문자의 접근권한에 따라 가져 올 수가 있습니다. 접근권한은 mydtail 수정페이지에서 네트워크 공개 설정을 하실 수 있습니다.

Person 개체의 속성은 다음 소스를 보면 알 수 있습니다.

/js/opensocial/opensocialreference/person.js

위 소스는 오픈소셜 개체가 가져야할 속성을 기술한 것이며, idtail.com에서는 idtail.com이 가지고 있는 개인정보에 맞추어 제공됩니다.

IDtail.com에서의 오픈소셜 개체 속성의 구현상태는 오픈소셜 구현 페이지에서 확인하세요.

<Module>
 <ModulePrefs title="My Friends List">
   <Require feature="opensocial-0.6"/>
 </ModulePrefs>
 <Content type="html">
   <![CDATA[
   <div id="content"></div>
   <script type="text/javascript" >

	gadgets.util.registerOnLoadHandler( init );

	function init() {
		var req = opensocial.newDataRequest();
		var viewerReq = req.newFetchPersonRequest('VIEWER'); 
		req.add( viewerReq, 'pageviewer' );
		req.send( onDataLoad );
	}

	function getValue( obj, name )
	{
		var v = obj.getField( opensocial.Person.Field[name] );
		return v != undefined ? v : '';
	}

	function onDataLoad(dataResponse) { /* dataResponse methods: hadError get */
		var cont = document.getElementById('content');

		if( dataResponse.hadError() ) {
			cont.innerHTML = "Error in fetching data";
			return;
		}
		
		var viewer = dataResponse.get('pageviewer').getData(); 
		/* js/opensocial/opensocialreference/person.js Person Object */
		
		var c;
		c = '<h1>Viewer\'s Information</h1>';
		c += '<ol>';
		c += '<li>ID:' + viewer.getId() + '</li>';
		c += '<li>NAME:' + viewer.getDisplayName() + '</li>';
		c += '<li>PROFILE_URL:' + getValue( viewer, 'PROFILE_URL' ) + '</li>';
		c += '<li>Image: <img src="' + getValue( viewer, 'THUMBNAIL_URL' ) + '"/></li>';
		c += '</ol>';
		cont.innerHTML = c;
	}
	</script>
	]]>
</Content>
</Module>


[편집] 친구 정보를 사용하는 예제

<Module>
 <ModulePrefs title="My Friends List">
   <Require feature="opensocial-0.7"/>
 </ModulePrefs>
 <Content type="html">
   <![CDATA[
   <div id="content"></div>
   <script type="text/javascript" >
	gadgets.util.registerOnLoadHandler( init );

	function init() {
		var req = opensocial.newDataRequest();
		req.add( req.newFetchPersonRequest('VIEWER'), 'viewer' );
		req.add( req.newFetchPeopleRequest('VIEWER_FRIENDS'), 'viewerFriends' );
		req.send( onDataLoad );
	}

	function getValue( obj, name )
	{
		var v = obj.getField( opensocial.Person.Field[name] );
		return v != undefined ? v : '';
	}

	function onDataLoad(dataResponse) { /* dataResponse methods: hadError get */
		var cont = document.getElementById('content');

		if( dataResponse.hadError() ) {
			cont.innerHTML = "Error in fetching data";
			return;
		}
		
		var viewer = dataResponse.get( 'viewer' ).getData(); 

		var c;
		c = '<h1>Viewer\'s Information</h1>';
		c += '<ol>';
		c += '<li>ID:' + viewer.getId() + '</li>';
		c += '<li>NAME:' + viewer.getDisplayName() + '</li>';
		c += '</ol>';

		var viewerFriends = dataResponse.get('viewerFriends').getData();

		c += '<ol>';
		viewerFriends.each( function(person) {
			c += '<li style="display:inline">' + 
				'<img src="' + getValue( person, 'THUMBNAIL_URL' ) + '"/>' +
				person.getDisplayName() + '</li>';
		} );
		c += '</ol>';

		cont.innerHTML = c;

	}
	</script>
	]]>
</Content>
</Module>

다음과 같이 요청항목을 두 개를 추가합니다.

	var req = opensocial.newDataRequest();
	req.add( req.newFetchPersonRequest('VIEWER'), 'viewer' );
	req.add( req.newFetchPeopleRequest('VIEWER_FRIENDS'), 'viewerFriends' );
	req.send( onDataLoad );

viewerFriends로 얻을 수 있는 방문자 친구 정보는

function onDataLoad(dataResponse) {
	var viewerFriends = dataResponse.get('viewerFriends').getData();
	viewerFriends.each( function(person) {....} );
	...
}

위와 같은 방식으로 얻은 후 each 함수를 이용하여 각각의 Person 개체를 person에 넣어 viewer 다루듯이 사용할 수 있습니다.

	function getValue( obj, name )
	{
		var v = obj.getField( opensocial.Person.Field[name] );
		return v != undefined ? v : '';
	}
	
	getValue( person, 'THUMBNAIL_URL' );

getValue 함수를 사용한 것은, 상대적으로 긴 열거형 자료의 키를 접근하는데 사용하기 쉽도록 만든 것이며, 실제로는 person.js 에 기술되어 있는 값을 사용하여

	person.getField( 'thumbnailUrl' );

과 같은 방식으로 사용하여도 무방합니다.

해당 person이 주인인지 또는 방문자인지 알고 싶을 때, 다음과 같이 사용합니다. 결과값의 데이타 타입은 boolean 이며 함수 호출가 아닌 멤버변수를 직접 접근하셔도 됩니다.

	viewer.isOwner() or viewer.isOwner_
        owner.isViewer() or owner.isViewer_


이전 페이지 | 다음 페이지