it-swarm.com.de

Facebook Graph API gibt keine E-Mail-Adresse zurück

Bearbeiten: Nicht duplizieren, weil:

  • Ich habe die Erlaubnis
  • Das Token wurde getestet
  • Code funktioniert mit Testbenutzer

Bitte nicht als Duplikat markieren ohne zu lesen.

Ich versuche, die E-Mail-Adresse des Benutzers abzurufen, aber ich verstehe sie nicht. Wenn ich im graph api Explorer auf send drücke, wird das E-Mail-Feld grau und sagt Folgendes:

feld ist leer oder vom Zugriffstoken nicht zugelassen

Aber wenn ich das Token debugge, wird ihm eine E-Mail-Berechtigung erteilt

Mein Profil hat eine E-Mail-Adresse.

Update: Ich habe versucht https://developers.facebook.com/tools/console/ . Mein Profil gibt auch auf einem anderen Computer nichts zurück. Der gleiche Code gibt jedoch die E-Mail-Adresse, den Namen und die UID eines anderen Kontos zurück.

Code:

    <fb:login-button scope="email">
  Grant Permissions to make more examples work
</fb:login-button>

<button onclick="doPost()">Post to Stream</button>

<script>
function userData() {
  FB.api('/me?fields=name,email', Log.info.bind('/me callback'));
};

FB.getLoginStatus(function(response) {
  if (response.status === 'connected') {
    userData();
  }
});
</script>

Ist es möglich, Ihre E-Mails zu sperren, damit niemand sie hat? Auch wenn ich die Erlaubnis erteile?

57
joao Beno

Nachdem ich meinen Fehlerbericht als Duplikat markiert habe und alle Beiträge und Links dort gelesen habe, habe ich herausgefunden, was dieses Problem verursacht hat und wie ich es beheben kann.

Das Problem Facebook scheint manchmal zu vergessen, was Ihre primäre E-Mail auf der Grafik-API ist (aber es ist immer noch in den Einstellungen.)

Lösung Der betroffene Benutzer muss die E-Mail entfernen, die Einstellungen speichern, dann die Adresse erneut hinzufügen, erneut bestätigen und dann zur primären Adresse machen. Dadurch wurde mein Konto sowohl in meiner Sandbox-App als auch in anderen Apps, in denen die Facebook-Anmeldung nicht funktioniert hat, repariert.

20
joao Beno

Der Marcus ' answer führt mich zu dem eigentlichen Problem, mit dem ich konfrontiert war.

Debuggen mit dem Facebook Explorer-Tool Ich konnte herausfinden, dass ich den E-Mail-Bereich bei der FB.login() -Methode festlegen sollte.

FB.login(function(response) {
    if (response.status === 'connected'){
        FB.api('/me?fields=id,email,name', function(data) {
        console.log( data.email ) // it will not be null ;)
    })
}, {scope: 'email'});

Es ist nicht ganz klar in der Quickstart Anleitung und ich hoffe, es hilft auch jemand anderem.

38
Miere

Ich hatte das gleiche Problem und ich glaube, ich habe herausgefunden, warum: Wenn der Benutzer eine unbestätigte E-Mail in Facebook hat (dh Facebook hat ihm eine Bestätigungs-E-Mail an seine E-Mail-Adresse gesendet, aber er hat nicht geantwortet), wird Facebook diese E-Mail NICHT an Ihre App weiterleiten auch wenn er dir die email erlaubnis gegeben hat (!!!).

Ich habe also seine Facebook-E-Mail-Adresse verwendet, wenn er einen Benutzernamen hat (d. H. [email protected]).

32
ozba

Für ein neues Facebook-Diagramm sind Bereiche erforderlich, die in der/me-Anforderung wie folgt hinzugefügt wurden:

/ me? fields = E-Mail, Geburtstag, Ort, Gebietsschema, Altersbereich, Währung, Vorname, Nachname, Namensformat, Geschlecht und Zugriffstoken =

6
Alin Razvan

Ich hatte das gleiche Problem, als ich die fb-Anmeldeschaltfläche für meine Site entwickelte. Ich hatte hier sogar Setup-Berechtigungen für meine App:

https://developers.facebook.com/apps/<my-app-ID>/permissions

und es funktionierte gut für bestimmte anfängliche Fälle, das heißt, es gab eine E-Mail (ich habe es auf mein eigenes Konto getestet und es gab meine E-Mail). Dann begann es plötzlich, überhaupt keine E-Mails mehr zu reflektieren. Nach zwei Stunden des Surfens stellte ich fest, dass es ein Problem mit dem Zugriffstoken gab, als ich auf diesen Link ging:

https://developers.facebook.com/tools/Explorer/<your-fb-id>/?method=GET&path=100002451127858%3Ffields%3Did%2Cemail

Aktualisiere deine-fb-id mit deiner ID und gehe zum obigen Link. Klicken Sie auf "Get Access Token". Klicken Sie in der sich öffnenden Registerkarte auf "Erweiterte Berechtigungen" und wählen Sie dort "E-Mail" aus und senden Sie sie ab. Testen Sie jetzt Ihre Abfrage erneut. Es wird auf jeden Fall funktionieren, sowohl auf der Konsole als auch auf Ihrer Website. Prost! :)

4
Sayed

Dies ist ein bekannter Fehler. Wenn für den Benutzer keine primäre E-Mail-Adresse festgelegt ist, gibt die Abfrage für E-Mail den Wert null zurück. Stellen Sie die E-Mail-Adresse für Ihr Konto auf primär https://www.facebook.com/settings?tab=account&section=email&view ein und versuchen Sie es dann.

Quelle: https://developers.facebook.com/bugs/298946933534016/

1
spence0021