OpenSocialTutorial-4
IDtail.com API
[편집] 방문자 정보 보기
앞 장에서 살펴본 주인 정보는 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_





