Antwort

0

Zunächst einmal sicher, dass FB.login() mit scope: email genannt wird, so dass das Token die Berechtigung des Benutzers E-Mails zugreifen hat .

Dann sollten Sie das Feld email explizit erwähnen, während /me Aufruf da standardmäßig wird es zurückgeben id und name nur.

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

Der richtige Weg für zusätzliche Felder (außer id und Namen) zu fragen, ist diese:

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

Natürlich haben Sie unbedingt die email Erlaubnis im Rahmen hinzugefügt:

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

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

Zusätzlich information.

Btw, können Sie API-Aufrufe here testen.

+0

i kann immer noch die E-Mail des angemeldeten Benutzers erhalten. Muss ich für die Erlaubnis eine Anfrage an Facebook stellen? aber die E-Mail ist bereits im App freigegeben –

+0

genehmigt bedeutet nicht, dass der Benutzer es autorisiert hat. siehe FB.login. und die E-Mail-Adresse muss auch im Benutzerkonto genehmigt werden. – luschn

+0

Ich habe den Code verwendet, den Sie angegeben haben, und jetzt gibt er mir nur die Benutzer-ID –

0

Stellen Sie sicher, „E-Mail“ scope definieren, während Login, dann könnte man es bekommt, wenn man fragen 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', 
); 
Verwandte Themen