Répondre

0

Tout d'abord assurez-vous que FB.login() est appelée avec scope: email de sorte que le jeton aura l'autorisation d'accéder au courrier électronique de l'utilisateur .

Ensuite, vous devez mentionner le champ email explicitement en appelant /me puisque par défaut, il retournera id et name seulement.

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

La façon de demander des champs supplémentaires (autres que id et nom) est celui-ci:

FB.api('/me', {fields: 'email'}, function(response) { 
    console.log(response); 
}); 

Bien sûr, assurez-vous que vous avez ajouté le email autorisation dans le cadre:

FB.login(function(response) { 
    if (response.authResponse) { 

    } 
}, {scope: 'email'}); 

Supplémentaire information. Par exemple, vous pouvez tester les appels API here.

+0

je ne peux toujours pas obtenir l'e-mail de l'utilisateur connecté. dois-je faire une demande à facebook pour la permission? mais l'email est déjà approuvé dans mon application –

+0

approuvé ne signifie pas que l'utilisateur l'a autorisé. voir FB.login. et l'adresse e-mail doit également être approuvée dans le compte d'utilisateur. – luschn

+0

J'ai utilisé le code que vous avez donné et maintenant il ne me renvoie que l'identifiant d'utilisateur, –

0

Assurez-vous de définir le champ « e-mail », tandis que la connexion, vous pouvez l'obtenir quand vous demandez graph.facebook.com:

$url = 'https://www.facebook.com/dialog/oauth'; 
$params = array(
    'client_id' => $this->strategy['app_id'], 
    'redirect_uri' => $this->strategy['redirect_uri'], 
    'scope' => 'email', 
);