gpt4 book ai didi

javascript - FB.Event.subscribe 永远不会被调用

转载 作者:行者123 更新时间:2023-11-30 18:25:21 24 4
gpt4 key购买 nike

这是我的 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-Popup 并没有任何反应......这应该是:

  FB.Event.subscribe('auth.login', function(response) {

应该被调用...但它没有...任何人都可以帮我解决这个问题吗?

谢谢。

编辑:

我刚刚注意到,只有当我已经登录到 Facebook 时,才会发生这种情况。如果我没有登录,登录弹出窗口会弹出两次(!),我可以登录 Facebook 并调用 FB.Event.Subscribe 函数。

那么我如何查看用户是否已登录 Facebook 并连接到我的应用程序?

为什么 Popup 被调用了两次?

最佳答案

如果您想检查用户是否已连接到您的应用程序,则需要使用 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>

关于javascript - FB.Event.subscribe 永远不会被调用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10993928/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com