无法通过Facebook集成获取用户电子邮件
问题描述:
我试图在用户在我的网站上按下“继续使用Facebook”之后获取用户的电子邮件。我查看了Stackoverflow和Facebook开发人员文档,看不到我尝试不工作的原因。无法通过Facebook集成获取用户电子邮件
JAVASCRIPT
window.fbAsyncInit = function() {
FB.init({
appId : '1882306058687148',
cookie : true,
xfbml : true,
version : 'v2.8'
});
FB.AppEvents.logPageView();
FB.getLoginStatus(function(response) {
statusChangeCallback(response);
});
};
(function(d, s, id){
var js, fjs = d.getElementsByTagName(s)[0];
if (d.getElementById(id)) {return;}
js = d.createElement(s); js.id = id;
js.src = "//connect.facebook.net/en_US/sdk.js";
fjs.parentNode.insertBefore(js, fjs);
}(document, 'script', 'facebook-jssdk'));
function checkLoginState() {
FB.getLoginStatus(function(response) {
console.log(response);
statusChangeCallback(response)
});
}
function statusChangeCallback(response) {
console.log('statusChangeCallback');
console.log(response);
if (response.status === 'connected') {
runAPI();
}
}
function runAPI() {
FB.api('/me', { locale: 'en_US', fields: 'name, email' }, function(response) {
console.log(response);
document.getElementById('name').value = response.name;
document.getElementById('email').value = response.email;
document.getElementById('fb-login').style.display = 'none'
});
}
** ** HTML
<fb:login-button scope="public_profile,email" onlogin="checkLoginState();">
</fb:login-button>
什么困惑我最是,虽然这IS通过拉动名称和肯定工作。
答
你只会得到一个电子邮件地址回来,如果用户在他们的个人资料已验证的一组。
即使如此,也有一些明显优势情况下,隐私设置仍然可以让它不返回一个都没有。当然,如果他们只使用他们的手机进行注册,他们可能根本没有一套。如果你的应用程序需要和电子邮件地址,那么你应该实施一个额外的步骤,供用户手动输入。 (在这种情况下,验证也是您的责任。)
+0
干杯的确对我有帮助。 –
如果用户在他们的个人资料中设置了经过验证的一个,您将只会收到一封电子邮件地址。即使如此,显然有一些边缘情况下隐私设置仍然可以使它不能返回一个。当然,如果他们只使用他们的手机进行注册,他们可能根本没有一套。如果您的应用需要_和电子邮件地址,则应该为用户手动输入一个附加步骤。 (在这种情况下,验证也是您的责任。) – CBroe
从[此链接](https://developers.facebook.com/docs/facebook-login/permissions#reference-email),'请注意,即使您请求电子邮件的权限,但不保证你会得到一个电子邮件地址。例如,如果有人使用电话号码而不是电子邮件地址注册Facebook,则电子邮件字段可能为空。“您是否尝试使用多个帐户?如果没有,这可能是它不工作的原因 – DrunkDevKek
这是目前正在与我使用电子邮件设置新的Facebook帐户进行测试 - 多数民众赞成在知道,但很感谢你。 –