Javascript 无法正确使用facebook JS SDK

Javascript 无法正确使用facebook JS SDK,javascript,facebook,facebook-graph-api,facebook-javascript-sdk,Javascript,Facebook,Facebook Graph Api,Facebook Javascript Sdk,我正在使用facebook JS SDK进行用户登录。我对它的工作原理感到困惑。当我使用此代码时: FB.init({ appId : '*********************************', channelURL: '*********************************', cookie : true, xfbml : true, oauth : tru

我正在使用facebook JS SDK进行用户登录。我对它的工作原理感到困惑。当我使用此代码时:

FB.init({
        appId     : '*********************************',
        channelURL: '*********************************',
        cookie    : true, 
        xfbml     : true,
        oauth     : true
    });
    FB.getLoginStatus(function(response){
        if(response.status == 'connected') {

    }
        else if(response.status == 'not_authorized') {
            /* Not Authorized */
            login();
        }
        else {
            /* Not Logged In*/
            /*login();*/
        }
    });
    FB.Event.subscribe('auth.login', function(response) {
        window.location.reload();
    });
    FB.Event.subscribe('auth.logout', function(response) {
        window.location.reload();
    });
}; /* method window.fbAsyncInit ends here*/
/* Checks user login status on facebook*/
function login(){
    FB.login(function(response) {
        if (response.authResponse) {
            //connected

        }
        else {
            //cancelled
        }
    }, {scope: 'email'});
} /*function login ends here*/
我无法获取用户电子邮件id

FB.init({
        appId     : '********************',
        channelURL: '********************',
        cookie    : true, 
        xfbml     : true,
        oauth     : true
    });
    FB.getLoginStatus(function(response){
        if(response.status == 'connected') {
            /* Connected Successfully */
            FB.login(function(response) {
                // handle the response
                if (response.authResponse) {

        }
        else {
            //cancelled
        }
            }, {scope: 'email,user_likes'});              
}
        else if(response.status == 'not_authorized') {
            /* Not Authorized */
            login();
        }
        else {
            /* Not Logged In*/
            /*login();*/
        }
    });
    FB.Event.subscribe('auth.login', function(response) {
        window.location.reload();
    });
    FB.Event.subscribe('auth.logout', function(response) {
        window.location.reload();
    });
}; /* method window.fbAsyncInit ends here*/
/* Checks user login status on facebook*/
function login(){
    FB.login(function(response) {
        if (response.authResponse) {
            //connected

        }
        else {
            //cancelled
        }
    }, {scope: 'email,user_likes'});
} /*function login ends here*/
而如果我使用这一个,它是给我的用户电子邮件id

FB.init({
        appId     : '********************',
        channelURL: '********************',
        cookie    : true, 
        xfbml     : true,
        oauth     : true
    });
    FB.getLoginStatus(function(response){
        if(response.status == 'connected') {
            /* Connected Successfully */
            FB.login(function(response) {
                // handle the response
                if (response.authResponse) {

        }
        else {
            //cancelled
        }
            }, {scope: 'email,user_likes'});              
}
        else if(response.status == 'not_authorized') {
            /* Not Authorized */
            login();
        }
        else {
            /* Not Logged In*/
            /*login();*/
        }
    });
    FB.Event.subscribe('auth.login', function(response) {
        window.location.reload();
    });
    FB.Event.subscribe('auth.logout', function(response) {
        window.location.reload();
    });
}; /* method window.fbAsyncInit ends here*/
/* Checks user login status on facebook*/
function login(){
    FB.login(function(response) {
        if (response.authResponse) {
            //connected

        }
        else {
            //cancelled
        }
    }, {scope: 'email,user_likes'});
} /*function login ends here*/
我正在获取电子邮件id

请指出我在第一个代码中哪里做错了

编辑:根据建议,我在登录功能中添加了{scope:'email,user_likes',},但仍然不起作用


谢谢

诀窍是添加{scope:'email,user_likes'}。。。 在第一段代码中,您缺少第二段代码中的这一部分。它将允许您获取用户的电子邮件id以及他的喜好

案例1:我无法获取用户电子邮件id

FB.init({
        appId     : '********************',
        channelURL: '********************',
        cookie    : true, 
        xfbml     : true,
        oauth     : true
    });
    FB.getLoginStatus(function(response){
        if(response.status == 'connected') {
            /* Connected Successfully */
            FB.login(function(response) {
                // handle the response
                if (response.authResponse) {

        }
        else {
            //cancelled
        }
            }, {scope: 'email,user_likes'});              
}
        else if(response.status == 'not_authorized') {
            /* Not Authorized */
            login();
        }
        else {
            /* Not Logged In*/
            /*login();*/
        }
    });
    FB.Event.subscribe('auth.login', function(response) {
        window.location.reload();
    });
    FB.Event.subscribe('auth.logout', function(response) {
        window.location.reload();
    });
}; /* method window.fbAsyncInit ends here*/
/* Checks user login status on facebook*/
function login(){
    FB.login(function(response) {
        if (response.authResponse) {
            //connected

        }
        else {
            //cancelled
        }
    }, {scope: 'email,user_likes'});
} /*function login ends here*/

唯一的原因可能是用户在进行这些更改之前已获得授权。请尝试对新用户再次使用相同的代码,或者从您的应用程序中删除该应用程序。

Hi ABCD,我已编辑了该问题,但它仍然不起作用。请更改为else{/*not loggin*/login();}….这是uncomment login()函数。您好,谢谢您的回复。我按照你说的做了,但仍然无法获取电子邮件id。请尝试使用
console.log
调试代码流。检查
getLoginStatus()
中的
response.status的值是多少,同时检查代码是否在
FB.Login()
中移动。您好,Sahil,您是正确的。代码未移动到FB.Login()。谢谢你把我推向正确的方向。现在开始工作了。