我正在使用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参数。但是当两者都存在时,它确实存在。
那么,我该如何收到电子邮件?
答案 0 :(得分:0)
好的,我终于明白了。在FB.Login函数上,我需要添加范围,用户必须给予权限。在我的代码中,它将是:
FB.login(checkLoginStatus,{scope: 'email'});;