0

所以这是我的另一个问题,已经给出了解决方案,但没有给出答案。

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

如果“单击”事件处理程序只是通过属性值或 AttachEvent 或您使用的任何内容(我使用 jQuery.bind())附加到按钮/任何内容,则无法保证在单击 FB 时API是满载的,因为大家都推荐异步加载。这就是为什么在加载 API 的代码中,我触发了一个事件,在该事件的处理程序中,我实际上绑定了“按钮”“单击”处理程序。然后,当用户单击“按钮”时,自然会触发事件,执行处理程序,打开 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();
    });
});

提前感谢大家,他们解释了这一点,同时也很有意义。再次感谢大家,谁可以告诉我如何解决这个问题,尊重上述标准。

4

0 回答 0