永続的APIを使ってマイミクの情報をjsonで保存
function write_friends() { var data; var req = opensocial.newDataRequest(); req.add(req.newFetchPeopleRequest(opensocial.newIdSpec({ userId: 'OWNER', groupId: 'FRIENDS' }), { max: 10 }), 'friends'); req.send(function(res) { data = res.get('friends').getData().asArray().map(function(p) { return { "nickname": escape(p.getDisplayName()), "id": p.getId()} }); var request = opensocial.newDataRequest(); var key = "friends"; var value = gadgets.json.stringify(data); request.add(request.newUpdatePersonAppDataRequest( opensocial.IdSpec.PersonId.VIEWER, key, value)); request.send(); }); }
nicknameは文字化けしたからescape()した
data = res.get('friends').getData().asArray().map(function(p) { return { "nickname": escape(p.getDisplayName()), "id": p.getId()} });
valueで渡すときに一工夫
var value = gadgets.json.stringify(data);
参照するとき
function read_friends() { var request = opensocial.newDataRequest(); request.add(request.newFetchPersonRequest( opensocial.IdSpec.PersonId.VIEWER), "viewer"); var param = {}; param[opensocial.IdSpec.Field.USER_ID] = opensocial.IdSpec.PersonId.VIEWER; var idSpec = opensocial.newIdSpec(param); request.add(request.newFetchPersonAppDataRequest(idSpec, ["friends"]), "viewer_data"); request.send(function (response) { if (response.hadError()) { // エラー処理 alert("エラー"); return; } var viewer = response.get("viewer").getData(); var data = response.get("viewer_data").getData(); var viewers_data = data[viewer.getId()]; var rd = viewers_data["friends"]; rd = gadgets.util.unescapeString(rd); var value = gadgets.json.parse(rd); alert(value[0].nickname); }); }
ここ嵌った
rd = gadgets.util.unescapeString(rd); var value = gadgets.json.parse(rd);
これ参考にしたのはmixiのsampleとか id:amachang さんの記事とかです。ていうかそのままだけど
この人すごいよなぁー。カッコ良いし。
ぼくもなんちゃってSEからノーマルSEにレベルアップしたい。
自分用メモだけど突っ込み・訂正・dis歓迎
■追記
id:ryoff に指摘された
unescape()しましょう
alert(unescape(value[0].nickname));
さーせん!