所以这是我的另一个问题,这些问题已经得到解决,但不是答案。
真的很简单。我想在页面上显示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();
});
});
提前感谢所有人,他们解释了这个并且同时也是有道理的。还要感谢所有人,他们可以告诉我如何解决这个问题,尊重上述标准。