Amazon

2011年3月16日水曜日

OpenSocialのrequest方法

OpenSocialアプリを作成する際、JavaScriptのロジックで
例えば自分の情報と友達の情報を取得することがでてくるが、
その際、以下のように2つのメソッドを書いていた。
  1. function getMyInfo(){  
  2.    var params = {};      
  3.     var req = opensocial.newDataRequest();  
  4.     req.add(req.newFetchPersonRequest(opensocial.IdSpec.PersonId.VIEWER,params), "viewer");  
  5.     req.send(function(data){  
  6.   
  7.        if (data.hadError()) {  
  8.             var msg = data.getErrorMessage();  
  9.             // エラー発生時の処理  
  10.         }  
  11.         else {  
  12.             var item = data.get("viewer");  
  13.             if (!item.hadError()) {  
  14.                 var viewer = item.getData();  
  15.                 myID = viewer.getId();  
  16.                 myName = viewer.getDisplayName();  
  17.                 myURL = viewer.getField(opensocial.Person.Field.THUMBNAIL_URL);  
  18.         }  
  19.     });  
  20. }  
  21.   
  22. function friendNumCheck(){  
  23.     var fparams = {};  
  24.     fparams[opensocial.IdSpec.Field.USER_ID] = opensocial.IdSpec.PersonId.VIEWER;  
  25.     fparams[opensocial.IdSpec.Field.GROUP_ID] = "FRIENDS";  
  26.     var fetchOpt = {};  
  27.     fetchOpt[opensocial.DataRequest.PeopleRequestFields.MAX] = 1;  
  28.     var idSpec = opensocial.newIdSpec(fparams);   
  29.     var req = opensocial.newDataRequest();  
  30.     req.add(req.newFetchPeopleRequest(idSpec, fetchOpt), "friends");  
  31.   
  32.     req.send(function(data){  
  33.         if (data.hadError()) {  
  34.             var msg = data.getErrorMessage();  
  35.         }  
  36.         else {  
  37.             var friends = data.get('friends')  
  38.             if (!friends.hadError()) {  
  39.                 var friend = friend.getData();  
  40.                 friendID = friend.getId();  
  41.                 friendName = friend.getDisplayName();  
  42.                 friendURL = friend.getField(opensocial.Person.Field.THUMBNAIL_URL);  
  43.             }  
  44.         }  
  45.     });  
  46. }  
よくよく考えたら、'viewer','friends'のリクエストをreq.addして一回のreq.send(function(data))とする方がリクエスト回数も少ないし、待つ時間も少なくて済む。
まだまだあまり理解できていないなぁ。。。

  1. function getInfo(){  
  2.     var params = {};      
  3.     var req = opensocial.newDataRequest();  
  4.     req.add(req.newFetchPersonRequest(opensocial.IdSpec.PersonId.VIEWER,params), "viewer");  
  5.   
  6.   
  7.     var fparams = {};  
  8.     fparams[opensocial.IdSpec.Field.USER_ID] = opensocial.IdSpec.PersonId.VIEWER;  
  9.     fparams[opensocial.IdSpec.Field.GROUP_ID] = "FRIENDS";  
  10.     var fetchOpt = {};  
  11.     fetchOpt[opensocial.DataRequest.PeopleRequestFields.MAX] = 1;  
  12.     var idSpec = opensocial.newIdSpec(fparams);   
  13.     var req = opensocial.newDataRequest();  
  14.     req.add(req.newFetchPeopleRequest(idSpec, fetchOpt), "friends");  
  15.     req.send(function(data){  
  16.   
  17.        if (data.hadError()) {  
  18.             var msg = data.getErrorMessage();  
  19.             // エラー発生時の処理  
  20.         }  
  21.         else {  
  22.             var item = data.get("viewer");  
  23.             if (!item.hadError()) {  
  24.                 var viewer = item.getData();  
  25.                 myID = viewer.getId();  
  26.                 myName = viewer.getDisplayName();  
  27.                 myURL = viewer.getField(opensocial.Person.Field.THUMBNAIL_URL);  
  28.   
  29.          
  30. var friends = data.get('friends')             
  31. if (!friends.hadError()) {  
  32.                 var friend = friend.getData();  
  33.                 friendID = friend.getId();  
  34.                 friendName = friend.getDisplayName();  
  35.                 friendURL = friend.getField(opensocial.Person.Field.THUMBNAIL_URL);  
  36.         }  
  37.     });  
  38. }  

0 件のコメント:

コメントを投稿

Amazon3