!!!mixi アプリ データの永続化 [mixi アプリ] !!データ永続化のサンプル {{ref_image mixi_app_parsist_dat.jpg}} *登録ボタンで閲覧者に紐つけしたデータを永続化 *削除ボタンで永続データをクリア !!ソース !重要API ,API,概要 ,[newFetchPersonAppDataRequest|http://code.google.com/intl/ja/apis/opensocial/docs/0.8/reference/#opensocial.DataRequest.newFetchPersonAppDataRequest],指定した個人のアプリケーション データを要求するアイテムを作成。Map< PersonId, Map> を返します。返されるデータの値はすべて、JSON ,[newUpdatePersonAppDataRequest|http://code.google.com/intl/ja/apis/opensocial/docs/0.8/reference/#opensocial.DataRequest.newUpdatePersonAppDataRequest],指定した個人のアプリケーション フィールドを更新するように要求するアイテムを作成。処理時にデータは返さない ,[newRemovePersonAppDataRequest|http://code.google.com/intl/ja/apis/opensocial/docs/0.8/reference/#opensocial.DataRequest.newRemovePersonAppDataRequest],指定した個人のデータストアから指定したキーを削除。処理時にデータは返さない ,[gadgets.util.unescapeString|http://code.google.com/intl/ja/apis/opensocial/docs/0.8/reference/gadgets/#gadgets.util.unescapeString],escapeString を元に戻す 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);

Memo

]]>