无法正确使用facebook JS SDK

时间:2013-01-17 11:15:26

标签: javascript facebook facebook-graph-api facebook-javascript-sdk

我使用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。

如果我使用这个,它会给我用户电子邮件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'},但仍无效。

谢谢

2 个答案:

答案 0 :(得分:1)

  

案例1:我无法获得用户电子邮件ID。

唯一的原因可能是用户在进行这些更改之前已经授权。尝试再次使用相同的代码与新用户或从App settings删除应用程序。

答案 1 :(得分:-1)

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