Facebook Email field return null (nawet jeśli uprawnienie "email" jest ustawione i zaakceptowane)

Dla niektórych użytkowników w naszej aplikacji, pole e-mail zwraca NULL, nawet jeśli użytkownik przyznał dostęp E-mail do aplikacji. Kiedy sprawdzamy parametr scope i ważność Tokena użytkownika dzięki narzędziu Debugger, wszystko jest ok. E-mail z uprawnieniami został zaakceptowany. Ale kiedy pytamy API Graph o adres e-mail użytkownika z prawidłowym tokenem użytkownika, nie pojawia się on w ogóle.

Czy istnieje sposób, aby użytkownik mógł uniemożliwić aplikacji otrzymanie jego e-maila, nawet jeśli przyznał pozwolenie na e-mail?

Thanks

Author: Benjamin Naïm, 2013-07-08

13 answers

Miałem ten sam problem i chyba dowiedziałem się dlaczego: Facebook wysłał facebook facebook e-mail z potwierdzeniem na adres e-mail użytkownika, ale nie odpowiedział) Facebook nie przekaże tego e-maila do Twojej aplikacji, nawet jeśli dał ci uprawnienia e-mailowe.w przypadku, gdy użytkownik ma niepotwierdzony e-mail na Facebooku (np. Facebook wysłał mu e-mail z potwierdzeniem na adres e-mail użytkownika, ale nie odpowiedział) Facebook nie przekaże tego e-maila do Twojej aplikacji, nawet jeśli dał ci uprawnienia e-mailowe.

Więc to co zrobiłem to użycie jego lub jej Facebook email jeśli użytkownik ma nazwę użytkownika (tj. [email protected]).

 88
Author: ozba,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-04-19 14:37:29

Mam ten sam problem. To działa dobrze na moim localhost, używam PHP SDK do logowania facebook i kiedy złożyć moją prośbę to zwrot wszystkich pól, takich jak e-mail, nazwa itp użytkownika, ale na serwerze jakoś to nie jest working.It nie zwróci wiadomości e-mail użytkownika. Zrobiłem wiele badań i rozwoju na ten temat i mam rozwiązanie tego problemu. :)

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

Jeśli używasz PHP-sdk po prostu przechodzi pola takie jak to zwraca email, first_name itp. Mam nadzieję, że wam się uda. dzięki.

 9
Author: user3020691,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-12-30 07:51:30

Facebook nie wysyła wiadomości e-mail, jeśli użytkownik zalogował się przy użyciu swojego numeru telefonu. Zobacz komentarze do https://github.com/mkdynamic/omniauth-facebook/issues/61 aby uzyskać więcej informacji.

 6
Author: user2468170,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-12-30 14:28:48

Musisz dać uprawnienia e-mail wraz z przyciskiem auth.

authButton.setReadPermissions(Arrays.asList("email"));
 3
Author: varghesekutty,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-11-11 06:12:21

Wszystko, co musisz wiedzieć:

1) Link 1

Niektóre możliwe przyczyny:

Brak adresu e-mail na koncie

Brak potwierdzonego adresu e-mail na koncie

Brak zweryfikowanego adresu e-mail na koncie

Użytkownik wprowadził punkt kontroli bezpieczeństwa, który wymagał od niego ponownego potwierdzenia adresu e-mail i jeszcze tego nie zrobił

  • Adres e-mail użytkownika jest nieosiągalny

  • Potrzebujesz również "e-mail" rozszerzone uprawnienia, nawet dla użytkowników, którzy mają poprawny, potwierdzony, dostępny adres e-mail w pliku.

2) Link 2

Uwaga, nawet jeśli poprosisz o pozwolenie na e-mail, nie jest to gwarantowane otrzymasz adres e-mail. Na przykład, jeśli ktoś zapisał się na Facebook z numerem telefonu zamiast adresu e-mail, e-mail pole może być puste.

 3
Author: gbk,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-10-07 19:59:24

W niektórych przypadkach Facebook może nie mieć poprawnego adresu e-mail dla użytkownika:

Email: string zawierający poprawny adres e-mail RFC822-Uwaga: Ten pole może być null, jeśli nie ma adresu e-mail dla użytkownika

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

 2
Author: J Starr,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-07-08 21:30:37

Facebook dostarczy Ci identyfikator e-mail użytkownika, jeśli tylko ten użytkownik ma potwierdzony identyfikator e-mail powiązany ze swoim kontem. Jeśli aplikacja może pobrać identyfikator e-mail dla niektórych użytkowników, problem może nie być związany z deweloperem.

 1
Author: veena s kurup,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-07-09 13:13:29

@ ozba rozwiązanie nie ma zastosowania, ponieważ facebook wyświetla teraz komunikat alertu, gdy użytkownik ma niepotwierdzony adres e-mail. Tak więc, jeśli masz ten problem, bardziej podoba się to, że użytkownik zarejestrował się za pomocą numeru telefonu. Wiadomość podczas próby uzyskania dostępu do poczty e-mail

Niektóre możliwe przyczyny:

  • Brak adresu e-mail na koncie (tylko numer telefonu)
  • Brak potwierdzonego adresu e-mail na koncie
  • użytkownik wprowadził punkt kontroli bezpieczeństwa, który wymagał od niego ponownego potwierdzenia adresu e-mail i nie jednak zrobione tak adres e-mail użytkowników jest nieosiągalny.

Sprawdź: https://developers.facebook.com/bugs/298946933534016

 1
Author: Priyanshu Chauhan,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-04-17 09:39:59

Według dokumentacji:

Uwaga, nawet jeśli poprosisz o pozwolenie na e-mail, nie jest gwarantowane, że otrzymasz adres e-mail. Na przykład, jeśli ktoś zarejestrował się w serwisie Facebook z numerem telefonu zamiast adresu e-mail, Pole e-mail może być puste.

To by wyjaśniało, dlaczego niektórzy użytkownicy mają null E-mail!

 1
Author: d-_-b,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-12-13 04:38:38

Możesz spróbować to zadziała String email = user.getProperty("email").toString(); String safeEmail = user.asMap ().get("email").toString ();

 0
Author: Hari Haran,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-01-24 13:14:48

Potrzebujesz jeszcze jednego pozwolenia od facebook ' a.

Dołącz (about_me) uprawnienia do Ustawienia facebook dev, a także w aplikacji lub kodzie..

 0
Author: Prasanna Anbu,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-08-02 12:25:24

Czytałem poprzednie odpowiedzi, ale chociaż niektóre z nich są prawdziwe, jak jeśli użytkownik nie ma potwierdzonego e-maila, ale numer telefonu komórkowego, wiele razy ten błąd zdarza się ignorując, jak zażądać informacji za pomocą wykresu API FB. Załóżmy, że twój login został pomyślnie wykonany, a teraz masz token dostępu i identyfikator użytkownika, ale nadal nie możesz zobaczyć poczty e-mail i innych pól, które Cię interesują. Skorzystaj z tego żądania po potwierdzeniu statusu logowania jako połączone:

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

Zależy od uprawnienia, o które prosiłeś, teraz będziesz mógł uzyskać dalsze informacje zgodnie z Twoimi potrzebami.

 0
Author: willyMon,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-05-01 17:21:48
$loginUrl = $facebook->getLoginUrl(
  array(
    'req_perms' => 'email'
  )
);
 -1
Author: Amol Ranjegaonkar,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-06-08 17:27:10