无法使用facebook javascript sdk获取facebook用户的电子邮件

时间:2017-08-16 15:08:43

标签: javascript ajax facebook facebook-graph-api

我正在使用javascript sdk在我的网站上使用facebook身份验证。我可以收到我的电子邮件和姓名但我无法收到他们的电子邮件,如果他们正在登录,只有他们的名字(这是我的fb开发者应用程序)。

它要求登录,以防没有人登录facebook但没有任何结果。如果我发出警告,它应该登录我的应用程序,它确实返回名称,而不是电子邮件。但如果是我,我会得到两者。为什么?

这是我的代码:

<%-- Facebook conection script--%>
<script src="//connect.facebook.net/en_US/all.js"></script>
<script> FB.init({
 appId: '334351783684824',
 cookie: true,
 xfbml: true,
 version: 'v2.8'


});

    function fbAuthUser() {
        FB.login(checkLoginStatus);;
    }

    function checkLoginStatus(response) {
        if (response.status === 'connected') {
            FB.api('/me', 'GET', { fields: 'email,name' }, function (response) {
                alert(response.email + "; " + response.name);
                Ajax(response.email, response.name);
            });
        }
    }


    function Ajax(expressao1, expressao2) {
        var request = { email: expressao1, nome: expressao2 }
        $.ajax({
            url: 'login.aspx/LoginExterno',
            method: 'post',
            contentType: 'application/json',
            data: JSON.stringify(request),
            dataType: 'json',
            success: function (resp) {
                window.location.href = resp.d;
            },
            error: function () { }
        })
    }
</script>

它应该登录,并在获取数据后,使用该ajax函数访问c#函数后面的代码,将用户重定向到索引,如果他/她已经有一个帐户,或者如果他/她没有没有。它甚至没有进入Ajax函数,因为可能是未定义的email参数。但是当两者都存在时,它确实存在。

那么,我该如何收到电子邮件?

1 个答案:

答案 0 :(得分:0)

好的,我终于明白了。在FB.Login函数上,我需要添加范围,用户必须给予权限。在我的代码中,它将是:

  FB.login(checkLoginStatus,{scope: 'email'});;