0

我正在使用 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'} 但仍然无法正常工作。

谢谢

4

2 回答 2

1

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

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

于 2013-01-17T11:58:48.963 回答
-1

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

于 2013-01-17T11:22:30.337 回答