2012-02-19 20 views
17

Używam zarejestrować się Facebook jako jeden ze sposobów, aby zalogować się do aplikacji internetowej, a wyraźnie poprosić o „e-mail” zgody ..Rejestracja z Facebook czasami nie przewiduje email

Na logowania niektóre dane użytkownika ($facebook->api('/me')) są przechowywane w bazie danych użytkowników, jednak czasami pole e-mail po prostu nie istnieje - czy jest to częsty problem?

+0

mieć spojrzeć na: http://stackoverflow.com/questions/9601620/facebook-graph-api-returning-an-empty-email? – Mangiucugna

Odpowiedz

26

tylko domyślać ...

Dokumentacja facebook mówi:

UWAGA: To pole nie zostanie zwrócony, jeśli nie prawidłowy adres e-mail jest dostępna dla użytkownika

Źródło: https://developers.facebook.com/docs/reference/api/user/

Kiedy więc adres e-mail zostanie unieważniony (użytkownicy, którzy nie używali Facebooka od lat i zniszczyli/zmienili swój adres e-mail, na przykład), Facebook może przestać zwracać to pole.

5% nieprawidłowego adresu może wydawać się duże, ale jeśli sprawdzę znajomych z Facebooka, uważam, że ponad 5% z nich nigdy nie korzysta z ich konta, i nie zdziwiłbym się, gdyby adres, którego użyli, gdy się zalogował jest teraz nieważny.

+0

Dzięki za odkopanie tego od dokumentów! Naprawdę nie sądzę, że Facebook sprawdza, czy e-mail użytkownika jest ważny w miarę upływu czasu. Czy możesz po prostu połączyć dokumenty w celach informacyjnych? –

+0

zrobione. Nie sądzę, żeby Facebook sprawdzał, ale myślę, że Facebook wysyła e-maile do użytkowników z różnych powodów (powiadomienia, ogłoszenia itp.). Wtedy Facebook jest świadomy, czy e-mail jest ważny, czy nie! –

+1

Facebook sprawdza, czy adres e-mail użytkownika jest prawidłowy. Mam ten problem z moim własnym kontem na Facebooku. W tej chwili Facebook uważa, że ​​mój e-mail nie jest prawidłowy. I nie powraca w eksploratorze wykresów – Karl

4

Użytkownicy nie zawsze muszą podawać adres e-mail, aby korzystać z Facebooka. Mogą również rejestrować się za pośrednictwem wiadomości SMS, choć jest to znacznie mniej powszechne.

Krótko mówiąc, FB nie zawsze ma adres e-mail, więc nie może go wyświetlić w aplikacji.

+0

Wszyscy moi użytkownicy są w Japonii, gdzie wiadomości SMS praktycznie nie istnieją. Zastanawiam się, czy istnieją inne sposoby rejestracji na Facebooku bez adresu e-mail? –

2

Spróbuj:

// Just to make sure email are permitted 
//$facebook->getLoginUrl(array('req_perms' => 'email')) 

// Request email 
FB.api('/me?scope=email', function(response) { /*...*/ }); 

Lub:

$email = $facebook->api('user_id?fields=email'); 

problemy:

  • Użytkownik zmienił widoczność swojego adresu e-mail do "tylko ja", a tym samym nie masz sposobu, aby to zdobyć.
  • Użytkownik zarejestrował się w wiadomości SMS zamiast e-mail, jak wspomniano w poprzedniej odpowiedzi.

ALTERNATYWA:

Jeśli koniecznie musisz skontaktować się z użytkownikiem, ale nie można dostać swój adres e-mail nMożesz nadal dostać swoją Facebook E-mail (każdy ma ten e-mail): „[email protected]” .

Jeśli użytkownik korzysta z serwera POP, bezpośrednio otrzyma wiadomość e-mail w Gmailu lub innych, jeśli nie, otrzyma wiadomość e-mail jako wiadomość prywatną. Jedyną wadą, jeśli ta metoda polega na tym, że twój e-mail musi być "czysty/tekst", a nie "HTML".

+0

Nie sądzę, że rozumiesz pytanie - FB nie odsyła e-maila pomimo metody, którą próbuję uzyskać (nawet w FB api explorer). –

+0

Tak, rozumiem twoje pytanie, proszę sprawdź na moją zaktualizowaną odpowiedź. – glautrou

+0

nie, nie. Dałem nagrodę, aby ktoś przekopał dokumenty, a może jakiś pracownik fb mógł mi powiedzieć, dlaczego iw jakich przypadkach nie otrzymam adresu e-mail użytkownika. –

1

Jedna rzecz to Users don't always have to provide an email address in order to use Facebook(could have registered through mobile) - o czym wspomniał Colm. Oprócz this-

Proszę sprawdzić, czy użytkownik na pewno przyznano Ci email rozszerzoną zgodę albo nie został następnie odwołany. Aby mieć kontrolę nad tym można użyć uprawnienia API-

/USER/permissions 
0

miałem podobny problem & znalazłem przyczynę tego. Ten problem występuje w przypadku użytkowników, którzy nie ustawili swojego podstawowego adresu e-mail (mają oni wiele adresów e-mail, ale nie wskazali, który jest ich głównym adresem e-mail) na karcie Ustawienia konta głównego.

Próbowałem używać takich kont w różnych znanych witrynach, które mają login na Facebooku &, nawet jeśli nie były w stanie pobrać adresu e-mail z takich kont.

Tak, to nie jest problem z kodem (Zakładając u prosić o uprawnieniach). Po prostu musimy poradzić sobie z takimi scenariuszami: & poinformuj użytkowników, że nie otrzymaliśmy ich adresu e-mail. Podobnie jak Klout.

Dzięki

0

Oprócz tego, co napisałem powyżej @Jigar Jain, użytkownicy mogą faktycznie odznacz pozwolenie e-mail podczas napływu znak. W takim przypadku jego adres e-mail nie zostanie zwrócony przez Facebook.

Do użytkownika należy implementacja logiki, która spowoduje, że logowanie nie powiedzie się, jeśli użytkownik usunie zaznaczenie uprawnienia do wiadomości e-mail, aby zmusić użytkowników do wybrania innej metody logowania, która zagwarantuje zwrócenie adresu e-mail użytkownika.

Powiązane problemy