メモ代わり。てきとーに。 いや、ですからてきとーですって。 2年前ぐらいにPythonあたりでメールくれた方、ごめんなさい。メール紛失してしまい無視した形になってしまいました。。。

2009年6月12日金曜日

[Apache Shindig][お勉強][Gadget][OpenSocial] メモ9 とりあえず友達ゲット

http://wiki.opensocial.org/index.php?title=OpenSocial_Tutorial
にある、サンプルをとりあえず実行してみる。


<?xml version="1.0" encoding="UTF-8"?>
<Module>
<ModulePrefs title="Hello">
<Require feature="opensocial-0.8" />
</ModulePrefs>
<Content type="html"><![CDATA[
<h1>Hello, World</h1>
<script type="text/javascript">
gadgets.util.registerOnLoadHandler(init);

function init() {
loadFriends();
}
function loadFriends() {
var req = opensocial.newDataRequest();
req.add(req.newFetchPersonRequest(opensocial.IdSpec.PersonId.VIEWER), 'viewer');

var viewerFriends = opensocial.newIdSpec({ "userId" : "VIEWER", "groupId" : "FRIENDS" });
var opt_params = {};
opt_params[opensocial.DataRequest.PeopleRequestFields.MAX] = 100;
req.add(req.newFetchPeopleRequest(viewerFriends, opt_params), 'viewerFriends');

req.send(onLoadFriends);
}
function onLoadFriends(data) {
var viewer = data.get('viewer').getData();
var viewerFriends = data.get('viewerFriends').getData();

html = new Array();
html.push('<ul>');
viewerFriends.each(function(person) {
if (person.getId()) {
html.push('<li>' + person.getDisplayName() + "</li>");
}
});
html.push('</ul>');
document.getElementById('friends').innerHTML = html.join('');
}
</script>
<div id="friends"></div>
]]>
</Content>
</Module>
 

な感じ。

実効すると、サーバ側に、

POST /social/rpc?st=unknown%3Aroot%3A0%3Adefault%3Ahttp%253A%252F%252Flocalhost%252Fhello.xml%3A0
 

なリクエストが飛んでくる。

ちなみにShindig使ってみているけど、勉強のため、そのまま使っているわけではなく、
SpringのControllerでShindigのServletと同じことをやっているもんで、
まだ、/social/rpcは用意していないので、エラーになるけど。
(SpringとGuiceの両方を有効にしているんで、DIが意味不明な感じだけど。)

--
なんとなく、securityToken(stパラメータ)でどのガジェットからのリクエストか
判断できるっぽい。もちろん詐称Welcomeだけど。

--

try {
JSONObject request = JsonConversionUtil.fromRequest(servletRequest);
dispatch(request, null, servletRequest, servletResponse, token);
} catch (JSONException je) {
sendJsonParseError(je, servletResponse);
}
 

って書いてあるので、やはりsecurityTokenで判断しているのかな?
tokenがsecurityToken。


.

0 コメント: