我想在呈现 iframe 登录以请求扩展权限之前检查登录用户的权限,但 iframe 弹出窗口被浏览器阻止(ff,chrome 测试)。我想避免这种情况,我很确定这是因为 js 函数的结果是“嵌套的”——我的 js 聪明才智是有限的,所以请原谅。
我猜如果我可以在不传递结果的情况下将所有内容保留在原始函数中,浏览器仍然会将登录 iframe 视为“用户启动”而不是阻止。
但我无法做到这一点 - 例如为什么以下结果会导致数据 = 未定义。
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>