如何使用登录按钮登录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登录按钮(
),可以将用户登录到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)})">