とりあえず、opensocial.requestPermission()のいんちきな実装をしてみた。
opensocial.Container.prototype.requestPermission = function(permissions, reason,
opt_callback) {
if (opt_callback) {
if (window.confirm("ガジェットがあなたのプロフィール情報の使用許可を求めています。\n【理由】" + reason + "\nここで許可するとあなたの全プロフィール情報が利用可能になります。許可しますか?")) {
opt_callback(new opensocial.ResponseItem(
null, null, false, null));
}
else {
opt_callback(new opensocial.ResponseItem(
null, null, opensocial.ResponseItem.Error.FORBIDDEN, null));
}
}
};
な感じ。
confirmで「はい」が押下されたら、サーバ側へ許可されたことを教えないとだめかも。
Personオブジェクトへのアクセスで拒絶されちゃうかもしれないので。
ま、その辺はコンテナ実装依存か。
で、ガジェットは
<?xml version="1.0" encoding="UTF-8"?>
<Module>
<ModulePrefs title="opensocial.requestPermission()">
<Require feature="opensocial-0.8" />
</ModulePrefs>
<Content type="html"><![CDATA[
<h1>opensocial.requestPermission()</h1>
<div id='env'></div>
<script type="text/javascript">
opensocial.requestPermission([opensocial.Permission.VIEWER],
"理由とか",
function(/*pensocial.ResponseItem*/res) {
if (res.hadError()) {
/* エラーだったよ */
switch(res.getErrorCode()) {
case opensocial.ResponseItem.Error.NOT_IMPLEMENTED:
alert("NOT IMPLEMENTEDだってさ");
break;
case opensocial.ResponseItem.Error.FORBIDDEN:
alert("FORBIDDENだってさ");
break;
default:
alert(res.getErrorMessage() + "だってさ");
break;
}
}
else {
alert("うまくいったっぽいよ");
}
});
</script>
]]>
</Content>
</Module>
な感じ。
.
0 コメント:
コメントを投稿