it-swarm.com.de

Das Facebook-E-Mail-Feld gibt null zurück (auch wenn die Berechtigung "E-Mail" festgelegt und akzeptiert wurde)

Für einige Benutzer in unserer Anwendung gibt das E-Mail-Feld NULL zurück, auch wenn der Benutzer der App den E-Mail-Zugriff gewährt hat .. Wenn wir den Gültigkeitsbereichsparameter und die Gültigkeit des Benutzer-Tokens dank des Debugger-Tools überprüfen, ist alles in Ordnung . Die Berechtigungs-E-Mail wurde akzeptiert ... Wenn wir jedoch die Graph-API nach der E-Mail des Benutzers mit dem gültigen Benutzertoken fragen, wird sie überhaupt nicht angezeigt.

Gibt es eine Möglichkeit, dass ein Benutzer verhindern kann, dass eine App seine E-Mail erhält, selbst wenn er die E-Mail-Berechtigung erteilt hat?

Vielen Dank

47
Benjamin Naïm

Ich hatte das gleiche Problem und ich glaube, ich habe herausgefunden, warum: Wenn der Benutzer eine unbestätigte E-Mail-Adresse bei Facebook hat (dh Facebook hat ihm eine Bestätigungs-E-Mail an die E-Mail-Adresse des Benutzers gesendet, aber er hat nicht geantwortet), wird Facebook NICHT weitergeleitet E-Mails an Ihre App senden, auch wenn er Ihnen die E-Mail-Berechtigungen erteilt hat.

Was ich getan habe, ist, seine oder ihre Facebook-E-Mail zu verwenden, wenn der Benutzer einen Benutzernamen hat (z. B. [email protected]).

90
ozba

Ich habe das gleiche Problem. Es funktioniert gut auf meinem localhost, ich verwende php SDK für Facebook-Login und wenn ich meine Anfrage übergebe, werden alle Felder wie E-Mail, Name usw. des Benutzers zurückgegeben, aber auf dem Server funktioniert es irgendwie nicht. Es wird keine E-Mail des Benutzers zurückgegeben Ich habe viele Forschungs- und Entwicklungsarbeiten durchgeführt und ich habe die Lösung für das Problem. :)

$profile = $facebook->api('/me?fields=email,first_name,last_name');

wenn Sie php-sdk verwenden, werden nur Felder wie diese weitergegeben, die E-Mail-Adresse, Vorname, usw. wird zurückgegeben. Hoffentlich funktioniert es für Sie alle.

9
user3020691

Facebook sendet die E-Mail nicht, wenn sich der Benutzer mit seiner Telefonnummer angemeldet hat . Weitere Informationen finden Sie unter https://github.com/mkdynamic/omniauth-facebook/issues/61 .

7
user2468170

Alles was du wissen musst:

1) Link 1

Mögliche Gründe: 

Keine E-Mail-Adresse auf Rechnung 

Keine bestätigte E-Mail-Adresse auf Rechnung

Keine bestätigte E-Mail-Adresse auf Konto 

Der Benutzer hat einen Sicherheitskontrollpunkt eingegeben, bei dem er seine E-Mail-Adresse erneut bestätigen muss, und dies noch nicht getan hat

  • Die E-Mail-Adresse des Benutzers ist nicht erreichbar

  • Sie benötigen auch die erweiterte E-Mail-Berechtigung, auch für Benutzer mit eine gültige, bestätigte, erreichbare E-Mail-Adresse in der Akte.

2) Link 2

Beachten Sie, dass selbst wenn Sie die E-Mail-Berechtigung anfordern, diese nicht garantiert ist Sie erhalten eine E-Mail-Adresse. Zum Beispiel, wenn sich jemand für .__ angemeldet hat. Facebook mit einer Telefonnummer anstelle einer E-Mail-Adresse, der E-Mail Feld darf leer sein.

3
gbk

Sie müssen die E-Mail-Berechtigung zusammen mit der Schaltfläche "Auth" erteilen.

authButton.setReadPermissions(Arrays.asList("email"));
3
varghesekutty

In einigen Fällen hat Facebook möglicherweise keine gültige E-Mail-Adresse für einen Nutzer:

email: Zeichenfolge, die eine gültige RFC822-E-Mail-Adresse enthält - Hinweis: this Das Feld kann Null sein, wenn dem Benutzer keine E-Mail-Adresse zur Verfügung steht

siehe https://developers.facebook.com/docs/reference/api/user/

2
J Starr

Die @ozba-Lösung ist nicht anwendbar, da Facebook jetzt eine Warnmeldung anzeigt, wenn der Benutzer eine nicht bestätigte E-Mail-Adresse hat. Wenn Sie also dieses Problem haben, ist es eher so, dass sich der Benutzer mit der Telefonnummer ..__ angemeldet hat.Message when trying to access email

Mögliche Gründe:

  • Keine E-Mail-Adresse auf Konto (nur Telefonnummer)
  • Keine bestätigte E-Mail-Adresse auf Rechnung
  • Der Benutzer hat einen Sicherheitskontrollpunkt eingegeben, der die erneute Bestätigung der E-Mail-Adresse erforderte. Der E-Mail-Adresse des Benutzers ist dies noch nicht möglich.

Überprüfen Sie: https://developers.facebook.com/bugs/298946933534016

1

Facebook stellt Ihnen die E-Mail-ID eines Benutzers zur Verfügung, wenn nur dieser Benutzer eine bestätigte E-Mail-ID für sein Konto besitzt. Wenn Ihre App eine E-Mail-ID für einige Benutzer abrufen kann, tritt das Problem möglicherweise nicht mit dem Entwickler auf.

1
veena s kurup

Ich habe die vorherigen Antworten gelesen, aber obwohl einige von ihnen zutreffen, als ob der Benutzer keine E-Mail-Adresse, sondern eine Mobiltelefonnummer bestätigt hat, tritt dieser Fehler oft auf, wenn ignoriert wird, wie die Informationen mithilfe des FB-API-Graphen abgefragt werden. Angenommen, Ihr Login wurde erfolgreich durchgeführt, und Sie verfügen jetzt über ein Zugriffstoken und eine Benutzer-ID. Sie können jedoch keine E-Mails und andere Felder sehen, an denen Sie interessiert sind. Verwenden Sie diese Anfrage, nachdem Sie den Login-Status als verbunden bestätigt haben:

FB.api(
  '/me',
  'GET',
  {"fields":"id,name,birthday,email,about,cover"},
  function(response) {
      // Insert your code here
  }
);

abhängig von den von Ihnen angeforderten Berechtigungen können Sie nun weitere Informationen abrufen, die Ihren Anforderungen entsprechen.

1
willyMon

Nach der Dokumentation :

Hinweis: Auch wenn Sie die E-Mail-Berechtigung anfordern, wird nicht garantiert, dass Sie eine E-Mail-Adresse erhalten. Wenn sich beispielsweise jemand bei Facebook mit einer Telefonnummer anstelle einer E-Mail-Adresse angemeldet hat, ist das E-Mail-Feld möglicherweise leer.

Das würde erklären, warum manche Benutzer eine null-E-Mail haben!

1
d-_-b

Sie benötigen eine weitere Erlaubnis von Facebook.

fügen Sie (about_me) die Erlaubnis für die Facebook-Dev-Einstellung und auch in Ihre App oder Ihren Code ein.

0
Prasanna Anbu

sie können es versuchen. Es funktioniert String email = user.getProperty ("email"). toString (); String safeEmail = user.asMap (). get ("email"). toString ();

0
Hari Haran