FB.Event.subscribe永远不会被调用
FB.Event.subscribe never gets called
这是我的Facebook连接代码:
<script>
jQuery(document).ready(function($){
$(".fb-login-button").live('click', function() {
console.log('click');
fbEnsureInit(function() {
console.log('EnsureInit');
FB.login(function(response) {
console.log('FB.login');
// redirect will be done
}, {scope: 'email'});
});
});
});
window.fbAsyncInit = function() {
FB.init({
appId : '105224616211361', // App ID
/*channelUrl : '///channel.html', // Channel File // We don't do not to get caching problems with the laguage!*/
status : true, // check login status
cookie : true, // enable cookies to allow the server to access the session
oauth : true, // enable OAuth 2.0
xfbml : true // parse XFBML
});
// Additional initialization code here
fbApiInitialized = true;
// whenever the user logs in, we refresh the page
FB.Event.subscribe('auth.login', function(response) {
try {
if (response.status == 'connected') {
console.log('connected');
$.ajax({
type: "POST",
url: "/?eID=login&modus=facebook&fb-login=1",
data: $(this).serialize(),
success: function(msg) {
console.log("LOGIN");
window.location.reload();
}
})
} else {
console.log('not connected');
window.location.reload();
}
} catch(err) {
window.location.reload();
}
});
};
/**
* Make sure that the FB is initialized!
*/
function fbEnsureInit(callback) {
if (!window.fbApiInitialized) {
setTimeout(function() { fbEnsureInit(callback); }, 50);
} else {
if (callback) { callback(); }
}
}
/**
* Load the JS SDK directly from Facebook
*/
(function() {
var e = document.createElement('script'); e.async = true;
e.src = document.location.protocol +
'//connect.facebook.net/de_DE/all.js';
document.getElementById('fb-root').appendChild(e);
}());
</script>
SDK 已加载。我可以看到FB-按钮,当我单击它时,代码工作直到
console.log('FB.login');
FB弹出窗口弹出,没有任何反应...这应该是以下点:
FB.Event.subscribe('auth.login', function(response) {
应该被叫...但它没有..谁能帮我解决这个问题?
谢谢。
编辑:
我刚刚注意到,这只有在我已经登录Facebook时才会发生。如果我没有登录,登录弹出窗口会弹出两次(!),我可以登录Facebook和FB功能。Event.Subscribe被调用。
那么,如何查看用户是否已登录到Facebook并连接到我的应用程序呢?
为什么弹出窗口被调用两次?
如果要检查用户是否已连接到应用程序,则需要使用FB.getLoginStatus
。
弹出窗口触发两次,因为FB按钮也具有登录功能。删除对$(".fb-login-button").live
的 ajax 调用并修改登录按钮,如下所示:
<div class="fb-login-button" scope="email" data-show-faces="true" data-width="200" data-max-rows="1"></div>
相关文章:
- 成功回调永远不会被JSONP请求调用
- 动态弹出窗口'通过调用一个永远运行并返回's每个周期后的数据
- 多次调用 javascript 会导致 setInterval 永远不会被清除
- FB.Event.subscribe永远不会被调用
- 初始化后,监视永远不会被调用(ui路由器)
- FB.ui回调未调用/FB.ui流永远发布加载
- jQueryAJAX对MVC控制器的调用永远不会返回
- 阿贾克斯回来了,但动作是“永远不会”.调用
- Form.parse()永远不会在node.js中被调用
- 带有返回json的Ajax调用永远不会成功
- YouTube API onPlayerReady永远不会被调用
- 指令在字段上调用setValidity(false),但是字段的有效性永远不会根据视图而改变
- 远程服务.getdistancemmatrix永远不会被调用(google maps API)
- 从api控制器加载的路由永远不会被调用
- Facebook SDK for Javascript, FB.login()回调不触发(异步调用永远不会得到响应?)
- 反向地理编码:将GPS坐标转换为位置名称的函数调用永远不会执行
- onreadystatechange函数永远不会被调用
- jQueryajax调用永远不会结束(成功和错误回调不会触发)
- reCaptcha 小部件不会过期,过期的回调永远不会被调用
- visual studio 2012 -找出哪些Javascript方法永远不会被调用