繁体   English   中英

FB登录按钮未验证

[英]FB Login Button Not Authenticating

我正在尝试将fb登录集成到我的网站中 如果未登录fb,请单击该按钮,然后要求fb凭据,然后什么也不做。 它只是将发帖请求发送到Facebook / connect / ping,状态为强制302

这是代码

<script>
var isLoaded=false;
window.fbAsyncInit = function() {
    FB.init({
        appId      : '{{app_id}}',
        status     : true,
        xfbml      : true
    });
};
isLoaded=true;

function checkIfLoaded() {
    if(isLoaded) console.log("LOADED!");
    else console.log("NOT YET!");
    return false;
}

(function(d, s, id){
 var js, fjs = d.getElementsByTagName(s)[0];
 if (d.getElementById(id)) {return;}
 js = d.createElement(s); js.id = id;
 js.src = "//connect.facebook.net/en_US/all.js";js.async=true;
 fjs.parentNode.insertBefore(js, fjs);
}(document, 'script', 'facebook-jssdk'));

FB.Event.subscribe('auth.authResponseChange', function(response) {
    if (response.status === 'connected') {
        onLogin(response);
    } else if (response.status === 'not_authorized') {
        FB.login();
    } else {
        FB.login();
    }
});

function onLogin(response) {
    console.log('login succ');
    var status=response.status;
    var accessToken=response.authResponse.accessToken;
    var expiresIn=response.authResponse.expiresIn;
    var signedRequest=response.authResponse.signedRequest;
    var userID=response.authResponse.userID;

    $("#status").val(status);
    $("#accessToken").val(accessToken);
    $("expiresIn").val(expiresIn);
    $("signedRequest").val(signedRequest);
    $("userID").val(userID);
    $("#form").submit();
}

</script>

<a href="#" onclick="checkIfLoaded();">Check</a>
<h2>User</h2>
<div class="fb-login-button" data-max-rows="1" data-size="medium" data-show-faces="false" data-auto-logout-link="false"></div>

在我的应用程序仪表板中,我刚刚添加了一个具有上述站点名称的平台,没有其他配置。

问题在于,由于您尝试订阅此事件时未初始化FBFB.Event未订阅FB.Event 有关错误,请参见控制台,您将看到:

FB未定义

原因是FB对象是在window.fbAsyncInit下异步定义的,因此无论何时要进行API调用或使用FB ,都必须在定义FB之后完成。

因此,解决问题的方法是,在定义FB之后(而不是在定义FB之前)编写FB.event ,就像这样-

window.fbAsyncInit = function() {
    FB.init({
        appId      : '{{app_id}}',
        status     : true,
        xfbml      : true
    });

    // write all your "FB" code here, since the FB is defined now
    FB.Event.subscribe('auth.authResponseChange', function(response) {
        if (response.status === 'connected') {
            onLogin(response);
        } else if (response.status === 'not_authorized') {
            FB.login();
        } else {
            FB.login();
        }
    });
};

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM