2017-06-06 58 views
1

我试图在用户在我的网站上按下“继续使用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通过拉动名称和肯定工作。

+1

如果用户在他们的个人资料中设置了经过验证的一个,您将只会收到一封电子邮件地址。即使如此,显然有一些边缘情况下隐私设置仍然可以使它不能返回一个。当然,如果他们只使用他们的手机进行注册,他们可能根本没有一套。如果您的应用需要_和电子邮件地址,则应该为用户手动输入一个附加步骤。 (在这种情况下,验证也是您的责任。) – CBroe

+0

从[此链接](https://developers.facebook.com/docs/facebook-login/permissions#reference-email),'请注意,即使您请求电子邮件的权限,但不保证你会得到一个电子邮件地址。例如,如果有人使用电话号码而不是电子邮件地址注册Facebook,则电子邮件字段可能为空。“您是否尝试使用多个帐户?如果没有,这可能是它不工作的原因 – DrunkDevKek

+0

这是目前正在与我使用电子邮件设置新的Facebook帐户进行测试 - 多数民众赞成在知道,但很感谢你。 –

回答

0

你只会得到一个电子邮件地址回来,如果用户在他们的个人资料已验证的一组。


即使如此,也有一些明显优势情况下,隐私设置仍然可以让它不返回一个都没有。当然,如果他们只使用他们的手机进行注册,他们可能根本没有一套。如果你的应用程序需要和电子邮件地址,那么你应该实施一个额外的步骤,供用户手动输入。 (在这种情况下,验证也是您的责任。)

+0

干杯的确对我有帮助。 –

相关问题