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

2009年7月5日日曜日

[Apache Shindig][お勉強][OpenSocial] メモ42 opensocial.requestPermission()

opensocial.requestPermission()


hasPermissionを見たので、requestPermissionを見てみる。

requestPermissionは、


指定した許可へのアクセス権を付与するようにユーザーに要求します。
 

とのこと。shindigデフォルトではfalseが返ってくるようなので、
これを使って権限を付与すればよいらしい。

とりあえずコールしてみる。

<?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;
default:
alert(res.getErrorMessage() + "だってさ");
break;
}
}
else {
alert("うまくいったっぽいよ");
}
});
alert(opensocial.hasPermission(opensocial.Permission.VIEWER));

</script>
]]>
</Content>
</Module>
 

ってなコードを書いた。

で実行すると、「"NOT IMPLEMENTEDだってさ"」が表示される。
さて、これをShindigで動かすにはどうするか。

hasPermissionと同様、デフォルトでは、

opensocial.Container.prototype.requestPermission = function(permissions, reason,
opt_callback) {
if (opt_callback) {
window.setTimeout(function () {
opt_callback(new opensocial.ResponseItem(
null, null, opensocial.ResponseItem.Error.NOT_IMPLEMENTED, null));
}, 0);
}
};
 

となっているんで、必ずNOT_IMPLEMENTEDが返る模様。

サンプル実装をちょっとだけ探してみたけど、うーむ、見つからない。。

samplecontainerでは、osapiのrequestPermissionは見つけたけど。
自由に実装していいのかしらん。

--
コンテナ依存ぽい。
誰が個人情報を取得していいのか、とか、面倒そうな部分。

--
そもそも、opensocial.hasPermission(opensocial.Permission.VIEWER)でtrueが返ってきた場合、
何を意味するのかいまいち理解できてない。。

「VIEWERのPersonオブジェクトへのアクセス権が、本Gadgetに付与されている」

ということでよいのかどうか。。

--
理解が間違ってた。。
requestPermissionがコールされると、ユーザ(VIEWER)に対して、
Personオブジェクトへのアクセス権を付与してください、
的な要求をする、
という感じっぽい。

だから、アクセス権限をつけてね、とダイアログとか表示するのかも。
ぜんぜん違う?

--
http://developer.home.goo.ne.jp/document/%E5%8F%8B%E9%81%94%E6%83%85%E5%A0%B1%E3%82%92%E5%8F%96%E5%BE%97%E3%81%99%E3%82%8B
を見ると、上記の理解で合っているっぽい。
このページは分かりやすい。さすが。

.

0 コメント: