Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/facebook/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Facebook 无法访问用户';s的电子邮件。获得;“未定义”;_Facebook_Facebook Javascript Sdk_Facebook Login - Fatal编程技术网

Facebook 无法访问用户';s的电子邮件。获得;“未定义”;

Facebook 无法访问用户';s的电子邮件。获得;“未定义”;,facebook,facebook-javascript-sdk,facebook-login,Facebook,Facebook Javascript Sdk,Facebook Login,我有一个Facebook登录实现的网站。我的应用程序具有用户电子邮件的权限。 即使用户使用Facebook登录我的应用程序,我也只能检索他/她的姓名或基本信息。不是电子邮件。 下面是我从Facebook开发者网站上复制的代码: window.fbAsyninit=function(){ FB.init({ appId:'xxxxxxxxxxxxx',//应用程序ID channelUrl:'//domain.org/channel.html',//通道文件 状态:true,//检查登录状态 co

我有一个Facebook登录实现的网站。我的应用程序具有用户电子邮件的权限。 即使用户使用Facebook登录我的应用程序,我也只能检索他/她的姓名或基本信息。不是电子邮件。 下面是我从Facebook开发者网站上复制的代码:

window.fbAsyninit=function(){
FB.init({
appId:'xxxxxxxxxxxxx',//应用程序ID
channelUrl:'//domain.org/channel.html',//通道文件
状态:true,//检查登录状态
cookie:true,//启用cookie以允许服务器访问会话
xfbml:true//解析xfbml
});
FB.Event.subscribe('auth.authResponseChange',函数(响应){
如果(response.status===“已连接”){
testAPI();
}else if(response.status===“未授权”){
FB.login();
}否则{
FB.login();
}
});
};
//异步加载SDK
(职能(d){
var js,id='facebook jssdk',ref=d.getElementsByTagName('script')[0];
if(d.getElementById(id)){return;}
js=d.createElement('script');js.id=id;js.async=true;
js.src=“//connect.facebook.net/en_US/all.js”;
ref.parentNode.insertBefore(js,ref);
}(文件);
函数testAPI(){
log('欢迎!获取您的信息…);
FB.api('/me',函数(响应){
log(“很高兴见到你,+response.email+”);
});
}

您可能没有电子邮件权限,即使您认为自己有

试试看

FB.login(函数(){
FB.api(“我”,
功能(响应){
console.log(response.email);
});
},{'scope':'email'});

该用户可能在Facebook上有一封未经验证的电子邮件。你可以要求他们在Facebook设置上验证他们的电子邮件(Facebook将向他们发送一封带有点击链接的电子邮件),然后重试

你可以检查一下,看看这不是一个bug,实际上,用户没有在facebook上注册电子邮件是可能的,这是正确的,因为有几个原因。例如,您已通过手机创建帐户,或尚未验证其电子邮件

所以这是一个众所周知的问题。如果我们无法从fb处获得电子邮件,最好的解决办法可能是以表格的形式索要电子邮件

我的问题是如何复制空的email字段来测试提供的解决方案

编辑。。这是他们在facebook开发者网站上说的:

…用于“用户”对象的“电子邮件”字段的文档( )澄清 此处的预期行为是:“此字段不会 如果没有可用的有效电子邮件地址,则返回”

在许多情况下,您可能会认为用户 应该有一个电子邮件地址返回,但他们不会。为了隐私 由于安全原因,无法详细说明确切的 原因任何特定用户的电子邮件地址都不会返回,因此 请不要问。一些可能的原因:

帐户上没有电子邮件地址;帐户上没有确认的电子邮件地址;不 验证帐户上的电子邮件地址;用户输入了一个安全检查点 这要求他们重新确认他们的电子邮件地址,但他们没有 然而这样做了;无法访问用户的电子邮件地址

您还需要“电子邮件”扩展权限,即使对于拥有 文件中的有效、已确认、可访问的电子邮件地址


如果特定电子邮件帐户中的问题仍然存在。 解决方案是:你必须要求人们使用他们的facebook电子邮件id登录 我的问题是,当我连接我的个人帐户时,未定义电子邮件 然后尝试了很多东西 终于用我的facebook电子邮件id登录了。它成功了


已定义用户名的facebook帐户导致登录应用程序时出现问题

您现在必须指定要获取的字段,它被称为“声明性字段”:


有关更多信息,请参阅更改日志:

电子邮件中存在问题。如果用户电子邮件未经验证,则将显示未定义的电子邮件,如果电子邮件已充分验证,则将显示已登录的电子邮件。请尝试登录并尝试打印姓名,我已通过这种方式解决了我的问题。。 检查雨果提到的这个链接。这真的很有帮助。


window.fbAsyninit=函数(){
FB.init({
appId:'xxxxxxxxxxxx',
状态:正确,
曲奇:是的,
xfbml:对
});
FB.Event.subscribe('auth.authResponseChange',函数(响应){
如果(response.status===“已连接”){
testAPI();
}else if(response.status===“未授权”){
FB.login();
}否则{
FB.login();
}
});
};
(职能(d){
var js,id='facebook jssdk',ref=d.getElementsByTagName('script')[0];
if(d.getElementById(id)){return;}
js=d.createElement('script');js.id=id;js.async=true;
js.src=“//connect.facebook.net/en_US/all.js”;
ref.parentNode.insertBefore(js,ref);
}(文件);
函数testAPI(){
api('/me?字段=名称,电子邮件',函数(响应){
console.log(response.name+'-'+response.email);
});
}

ref:

我得到了许可,问题是关于我的帐户。我创建了另一个Facebook帐户,登录可以显示电子邮件。谢谢,伙计,你搞定了!我花了这么多时间试图获取电子邮件,即使是在添加电子邮件范围时。哦,我的话!我已经寻找这个答案好几天了,上帝啊!干得好!找了几个小时!欢迎来到堆栈溢出!请不要只回答源代码。试着提供一个关于你的解决方案如何工作的很好的描述。请参阅:。谢谢
FB.api('/me', {fields: 'name,email'}, function(response) {
  console.log('Good to see you, ' + response.email + '.');
});
    <html>
    <head></head>
    <div id="fb-root"></div>
    <script>
    window.fbAsyncInit = function() {
    FB.init({
        appId      : 'xxxxxxxxxxxxx',
        status     : true,
        cookie     : true, 
        xfbml      : true  
    });

    FB.Event.subscribe('auth.authResponseChange', function(response) {

        if (response.status === 'connected') {
        testAPI();
        } else if (response.status === 'not_authorized') {
        FB.login();
        } else {
        FB.login();
        }
    });
    };

    (function(d){
    var js, id = 'facebook-jssdk', ref =     d.getElementsByTagName('script')[0];
        if (d.getElementById(id)) {return;}
    js = d.createElement('script'); js.id = id; js.async = true;
    js.src = "//connect.facebook.net/en_US/all.js";
    ref.parentNode.insertBefore(js, ref);
    }(document));

    function testAPI() {
        FB.api('/me?fields=name,email', function(response) {
        console.log(response.name + '---'+response.email);
        });
    }
    </script>

    <fb:login-button show-faces="true" width="200" max-rows="1"     scope="public_profile,email"></fb:login-button>

    </body>
    </html>