4

Я пытаюсь найти пользователя facebook email для моего приложения. Но когда я запрашиваю, адрес электронной почты возвращается как undefined. Я не понимаю, как с этим бороться.электронная почта с facebook javascript api

Вот мой код-

<body> 
    <script> 
    function statusChangeCallback(response) { 
     console.log('statusChangeCallback'); 
     console.log(response); 

     if (response.status === 'connected') { 

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

     FB.login(function(response) {}, { 
      scope: 'email' 
     }); 
     document.getElementById('status').innerHTML = 'Please log ' + 
      'into this app.'; 
     } else { 
     FB.login(function(response) {}, { 
      scope: 'email' 
     }); 
     document.getElementById('status').innerHTML = 'Please log ' + 
      'into Facebook.'; 
     } 
    } 

    function checkLoginState() { 
     FB.getLoginStatus(function(response) { 
     statusChangeCallback(response); 
     }); 
    } 

    window.fbAsyncInit = function() { 
     FB.init({ 
     appId: 'app id', 
     cookie: true, // enable cookies to allow the server to access 

     xfbml: true, // parse social plugins on this page 
     version: 'v2.1' // use version 2.1 
     }); 

     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 testAPI() { 
     console.log('Welcome! Fetching your information.... '); 
     FB.api('/me', function(response) { 
     alert(response.name); 
     alert(response.email); 
     console.log('Successful login for: ' + response.name); 
     document.getElementById('status').innerHTML = 'Thanks for logging in, ' + response.name + '!'; 
     }); 
    } 
    </script> 
    <fb:login-button perms="email" autologoutlink="true" onlogin="checkLoginState();"> 
    </fb:login-button> 
    <div id="status"> 
    </div> 
</body> 
+0

в состоянии получить электронную почту, используя Вы [Graph API Проводник] (https://developers.facebook.com/tools/explorer/)? –

ответ

1

Вы должны использовать атрибут вместо permsscope в Вход Баттона, поэтому разрешение не может быть извлечена. Попробуйте

<fb:login-button scope="public_profile,email" autologoutlink="true" onlogin="checkLoginState();"> 
</fb:login-button> 

См:

+0

извините, но его не работает –

+0

Это не очень помогает. Что именно не работает? – Tobi

+0

alert (response.email) дает сообщение как неопределенное. –

8

@Tobi это действительно спас мой день:

FB.api('/me 

Заменено

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

Однако, я не понимаю, почему объем следующего кода (который находится в документации facebook) не работает

<fb:login-button scope="public_profile,email" onlogin="checkLoginState();">