Facebook SDK不会返回用户发送的电子邮件

时间:2016-06-14 19:05:10

标签: php facebook facebook-graph-api facebook-javascript-sdk facebook-php-sdk

我看到这里有很多问题,但我的问题没有解决办法。我有PHP登录的PHP网站,我需要获得一个电子邮件地址,但Facebook SDK不会返回它。这是JS代码:

f = io.open(today, 'w')

这是PHP,重定向时:

 $(function(){
   $('.fb_reg_btn').click(function(){
       FB.login(function(response){

           FB.api('/me?fields=email', function(response) {
               window.top.location ="http://redirecturlhere";
           });
           return false;
       });
       return false;
   });
});

这是与Facebook的标准登录,它工作正常,但它不返回电子邮件地址,但它返回其他值,如名字,姓名,姓氏,身份证。 var_dump的结果是(编辑):

  

对象(Facebook \ GraphNodes \ GraphUser)#37(1){[“items”:protected] => array(4){[“name”] => string(12)“name edited”[“first_name”] => string(5)“name edited”[“last_name”] => string(6)“name edited”[“id”] => string(17)“numbers”}}

如何获取和电子邮件地址? 我确定用户有电子邮件,我使用相同的代码,但另一个FB应用程序用于FB登录的其他网站,并返回和电子邮件。我试图用“范围”改变“字段”,但是相同。

1 个答案:

答案 0 :(得分:1)

您必须在登录过程中的scope参数中添加email权限。例如:

FB.login(function(response) {
    if (response.authResponse) {
        //user just authorized your app
        FB.api('/me', {fields: 'email'}, function(response) {
           window.top.location = 'http://redirecturlhere';
       });
    }
}, {scope: 'email'});

来源:http://www.devils-heaven.com/facebook-javascript-sdk-login/

另外,请确保电子邮件已在Facebook上获得批准。