Facebook OAuth对话框弹出窗口被阻止

时间:2012-04-26 11:39:19

标签: javascript facebook oauth

所以这是我的另一个问题,这些问题已经得到解决,但不是答案。

真的很简单。我想在页面上显示OAuth对话框。此页面既可以是Facebook选项卡,也可以是独立的。我寻找答案的大多数地方都说必须调用FB.login()函数来响应用户操作,“像点击按钮”等;否则,您可能会冒被浏览器阻止的OAuth对话框弹出窗口。而这正是我正在做的事情。然而...

如果“click”事件处理程序只是附加到按钮/通过属性值,或者AttachEvent,或者你使用的任何东西(我使用jQuery.bind()),那么就不能保证单击FB API已完全加载,因为每个人都建议它是异步加载的。这就是为什么在加载API的代码中,我触发一个事件,在其处理程序中我实际绑定了“button”“click”处理程序。然后,当用户单击“按钮”时,事件自然会被触发,处理程序被执行,OAuth对话框被打开...并被阻止。请。任何人。我究竟做错了什么?请注意,我正在寻找解决方案。但是,我仍然需要通过对话框(而不是重定向)来完成,我仍然需要异步加载API。这是一些代码......

</head>之前:

window.fbAsyncInit = function () {
        FB.init({
            "status":true,
            "cookie":true,
            "xfbml":true,
            oauth:true,
            "appId":"12345678987654321"
        });
    FB.Canvas.setAutoGrow();
    jQuery(document).trigger("fb-ready");
};

(function (d, s, id) {
    var js, fjs = d.getElementsByTagName(s)[0];
    if(d.getElementById(id)) {return;}
    js = d.createElement(s)
    js.src = "//connect.facebook.net/en_GB/all.js#xfbml=1&appId=398161863536524";
    fjs.parentNode.insertBefore(js, fjs);
}(document, "script", "facebook-jssdk"))

在要点击的</div>之后:

jQuery(document).bind("fb-ready", function() {
    jQuery("#btn-do-that-stuff").bind("click", function() {
        if( !FB ) { return false; }
        FB.login();
    });
});

提前感谢所有人,他们解释了这个并且同时也是有道理的。还要感谢所有人,他们可以告诉我如何解决这个问题,尊重上述标准。

0 个答案:

没有答案