Facebook连接:可以检索id,用户名但无法检索电子邮件

时间:2015-10-16 09:43:05

标签: javascript facebook

我可以从facebook connect获取id和用户名,但我无法检索到该电子邮件!

这是JS脚本:

function connectionFacebook()
{   console.log('connectionFacebook called');
    FB.api('/me?fields=email,name', { fields: 'name, email' }, function(response) 
    {
        console.log(response);

回复给了我:

  

对象{名称:" John Doe",id:" 11112222333344445555"}

但没有电子邮件!

PS。我想它使用了一些旧的FB连接j,因为我在一个相当古老的网站上工作。 我不知道它使用的是什么版本的FB,但我想是旧的!

ex:在网站中找到的代码;

FB.Event.subscribe('auth.login', function(response) 
        {           
            connectionFacebook();           
;
        });     

        FB.getLoginStatus(function(response) 
        {           
            if (response.authResponse) 
            {               
                connectionFacebook();               
            } 
            else 
            {
                // no user session available, someone you dont know
                //alert("getLoginStatus:deconnecté");
            }
        });





$.fn.connexionFacebook = function(  ) {
                return this.each(function () {
                    FB.init({
                            appId  : xxxxxxxxx, 
                            status : true, 
                            cookie : true, 
                            xfbml  : true  
                        });
                    });
            }
        })( jQuery );

<script src="http://connect.facebook.net/fr_FR/all.js"></script>

<fb:login-button show-faces="false" width="450" perms="email,user_birthday,user_location" size="medium">FaceBook connect</fb:login-button>

1 个答案:

答案 0 :(得分:1)

我猜你没有权限访问用户的电子邮件。 Facebook要求您设置范围,以确定您需要访问哪些信息。

在您的情况下,您需要将范围指定为public_profile,email才能访问该电子邮件。您可以在用户登录时执行此操作。使用API​​调用:

FB.login(callback, { 'scope': 'public_profile,email' });

或使用按钮:

<fb:login-button scope="public_profile,email"></fb:login-button>

在作用域中指定email会要求用户在登录时与您的应用共享她的电子邮件地址:

Facebook asking for Email scope