如何使用登录按钮登录Facebook?
我的应用程序有一个Facebook登录按钮(如何使用登录按钮登录Facebook?,facebook,facebook-javascript-sdk,facebook-login,facebook-authentication,Facebook,Facebook Javascript Sdk,Facebook Login,Facebook Authentication,我的应用程序有一个Facebook登录按钮(),可以将用户登录到Facebook并验证他们对我的应用程序的使用情况。这是我的代码(login()和logout()分别为登录和注销准备页面布局)。有关此代码背后的原因,请参阅 window.fbAsyncInit = function() { FB.init({ appId: myAppID, channelUrl: window.location.protocol + '//' +
),可以将用户登录到Facebook并验证他们对我的应用程序的使用情况。这是我的代码(login()
和logout()
分别为登录和注销准备页面布局)。有关此代码背后的原因,请参阅
window.fbAsyncInit = function() {
FB.init({
appId: myAppID,
channelUrl: window.location.protocol + '//'
+ window.location.host + '/channel.html',
status: false,
cookie: true,
xfbml: false,
oauth: true
});
FB.getLoginStatus(function(response) {
if (response.status === 'connected') {
login(response);
} else {
FB.Event.subscribe('auth.login', function(response) {
login(response);
});
logout();
}
});
}
(function(d){
var js, id = 'facebook-jssdk', ref = d.getElementsByTagName('script')[0];
if (d.getElementById(id)) return;
js = d.createElement('script'); js.id = id; js.async = true;
js.src = "//connect.facebook.net/en_US/all.js";
ref.parentNode.insertBefore(js, ref);
}(document));
问题是:新用户获得Oauth对话框,可以登录Facebook,但是,auth.login
不会为他们启动。也没有auth.authResponseChange
和auth.statusChange
(均已说明)。下次用户按下按钮时,或者如果他们已经登录Facebook,对话框会弹出并立即消失。(奇怪的是,在我自己的Facebook帐户上,回调确实如预期的那样发生,可能是因为我之前已经验证了该应用。)
作为一种解决方法,我尝试将触发FB.login()
作为登录按钮的手动onclick事件(请原谅使用内联Javascript):
但这也不会触发登录回调(尽管它会让用户登录)
使用登录按钮登录Facebook的正确方式是什么?事实证明,这些登录方式都很好,我只是忘了在developers.Facebook.com上的应用程序设置中禁用“沙盒模式”: “如果启用,则只有应用程序开发人员才能使用应用程序。” 哎呀
<fb:login-button onclick="FB.login(function(r){if(r.authResponse)login(r)})">