http://code.google.com/intl/ja/apis/opensocial/docs/0.8/devguide.html
を参考に、感触をつかむためにサンプルコードをいくつか書いてみた。
人やプロファイルへのアクセス
ただ、マイミクの画像とニックネームををリストするサンプル

| <?xml version="1.0" encoding="UTF-8" ?> <Module> <ModulePrefs title="list_friends"> <Require feature="opensocial-0.8"/> </ModulePrefs> <Content type="html"> <![CDATA[ <script type="text/javascript"> // 閲覧者の友人コレクション取得要求 function request() { var idspec = opensocial.newIdSpec( { "userId" : "VIEWER", "groupId" : "FRIENDS" }); var req = opensocial.newDataRequest(); req.add(req.newFetchPeopleRequest(idspec), "friends"); req.send(response); } // 閲覧者の友人コレクション取得応答 function response(dataResponse) { var friends = dataResponse.get("friends").getData(); document.getElementById("friend_list").innerHTML = printFriendsList(friends); } // 閲覧者の友人リスト表示 function printFriendsList(friends) { var html = "<table border='1'>"; html += "<tr><th>Image</th><th>NickName</th></tr>"; friends.each( function(friend) { html += "<tr>"; html += "<td><img src='" + friend.getField("thumbnailUrl") + "'></td>"; html += "<td><a href='" + friend.getField("profileUrl") + "' target='_blank'>" + friend.getDisplayName() + "</a></td>"; html += "</tr>"; }); html += "</table>"; return html; } gadgets.util.registerOnLoadHandler(request); </script> <div id="friend_list"/> ]]> </Content> </Module> |
データ永続化
付箋みたいに、メモデータを永続化しておく。日本語がおかしいが今後の課題。
| <?xml version="1.0" encoding="UTF-8" ?> <Module> <ModulePrefs title="parsistance date sample"> <Require feature="opensocial-0.8"/> </ModulePrefs> <Content type="html"> <![CDATA[ <script type="text/javascript"> var key1 = "key_memo"; // 永続データ読み込み要求 function loadRequest() { var req = opensocial.newDataRequest(); req.add(req.newFetchPersonRequest("VIEWER"), "viewer"); var fields = [key1]; req.add(req.newFetchPersonAppDataRequest("VIEWER", fields), "viewer_data"); req.send(loadResponse); } // 永続データ読み込み応答 function loadResponse(data) { var viewer = data.get("viewer").getData(); var viewer_data = data.get("viewer_data"); if (viewer_data.hadError()) { document.getElementById("message").innerHTML = data.getErrorMessage(); return; } var dataAry = viewer_data.getData()[viewer.getId()]; var memo = (dataAry==null)?"":dataAry[key1]; var txtMemo = document.getElementById("memo"); txtMemo.value = gadgets.util.unescapeString(memo); txtMemo.disabled = false; } // 永続データ保存要求 function registRequest() { var req = opensocial.newDataRequest(); var txtMemo = document.getElementById("memo"); txtMemo.disabled = true; req.add(req.newUpdatePersonAppDataRequest("VIEWER", key1, txtMemo.value)); req.send(registResponse); } // 永続データ保存応答 function registResponse(data) { if (data.hadError()) { document.getElementById("message").innerHTML = data.getErrorMessage(); return; } loadRequest(); } // 永続データ削除要求 function removeRequest() { var req = opensocial.newDataRequest(); req.add(req.newFetchPersonRequest("VIEWER"), "viewer"); var fields = [key1]; req.add(req.newRemovePersonAppDataRequest("VIEWER", fields), "viewer_data"); req.send(loadResponse); } gadgets.util.registerOnLoadHandler(loadRequest); </script> <p style="text-weight:bold;">Memo</p> <textarea id="memo" rows="3" cols="20"> </textarea> <div id="message"/> <input type="button" id="regist" value="登録" onclick="registRequest();"/> <input type="button" id="remove" value="削除" onclick="javascript:removeRequest();"/> ]]> </Content> </Module> |
アクティビティ
トップページの更新履歴にテキストを表示させ、作成したアクティビティに誘導できる。
まだぜんぜん見ていないけど、どうもセキュリティ的に制約が多そうな感じ。
| <?xml version="1.0" encoding="UTF-8" ?> <Module> <ModulePrefs title="acitivity_test"> <Require feature="opensocial-0.8"/> </ModulePrefs> <Content type="html"> <![CDATA[ <script type="text/javascript"> function postActivity(activity_msg) { var parms = {}; parms[opensocial.Activity.Field.TITLE] = activity_msg; var activity = opensocial.newActivity(parms); opensocial.requestCreateActivity( activity, opensocial.CreateActivityPriority.HIGH, activityResultCallback); var panel = document.getElementById("activity_panel"); panel.innerHTML = "アクティビティを作成するテストmixiアプリ"; } function activityResultCallback(status) { if (status.hadError()) { alert("Error Creating activity."); } } function startActivity() { postActivity("アクティビティのテストです!クリックして!"); } gadgets.util.registerOnLoadHandler(startActivity); </script> <div id="activity_panel"></div> ]]> </Content> </Module> |
こちらにまとめてます。
なんとはなし感じは分かってきた。
コメントする