iframeログインを提示して拡張パーマを要求する前に、ログインしているユーザーのアクセス許可を確認したいのですが、iframeポップアップがブラウザーによってブロックされます(ff、クロムテスト済み)。私はこれを避けたいと思っています。js関数の結果が「ネスト」されているので、かなり確信しています。私のjsの賢さは限られているので、すみません。
結果を渡さずにすべてを元の関数に保持できれば、ブラウザーはログインiframeを「ユーザーが開始した」と見なし、ブロックしないと推測しています。
しかし、私はこれを行うことができません-たとえば、次の結果がdata=undefinedになるのはなぜですか。
var data = FB.api(
{
method: 'fql.query',
query: 'SELECT create_event FROM permissions WHERE uid=' + response.session.uid
});
alert(data); // = undefined
私の現在の完全なコードは次のとおりです。
<button id="myButton" >Test Publish Event</button>
<script>
$('#myButton').bind('click', function() {
FB.getLoginStatus(function(response) {
if (response.session) {
// logged in and connected user, someone you know
FB.api(
{
method: 'fql.query',
query: 'SELECT create_event FROM permissions WHERE uid=' + response.session.uid
},
function(response) {
if(response[0].create_event == 1) {
alert('permission granted');
} else {
alert('permission absent');
FB.login( function(response) {if (response.session) {
handleSessionResponse(response);
if (response.perms) {
// user is logged in and granted some permissions.
// perms is a comma separated list of granted permissions
alert(response.perms);
} else {
// user is logged in, but did not grant any permissions
}
} else {
// user is not logged in
}
}, {perms:'create_event,rsvp_event'});
}
}
);
</script>