2012-02-19 9 views
17

sto usando Registrati con Facebook come uno dei modi per accedere al mio web app, ed espressamente chiedere l'autorizzazione "e-mail" ..Registrati con Facebook a volte non fornisce e-mail

su login, alcuni dei dati utente ($facebook->api('/me')) sono memorizzati nel database degli utenti, tuttavia, a volte il campo di posta elettronica non esiste - è un problema comune?

+0

dare un'occhiata a: http://stackoverflow.com/questions/9601620/facebook-graph-api-returning-an-empty-email? – Mangiucugna

risposta

26

Solo una supposizione ...

La documentazione facebook dice:

nota: questo campo non verrà restituita in caso nessun indirizzo e-mail valido è disponibile per l'utente

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

Quindi, quando un indirizzo e-mail diventa non valido (utenti che non hanno usato Facebook da anni e hanno distrutto/cambiato il loro indirizzo e-mail, ad esempio), Facebook potrebbe interrompere la restituzione di questo campo.

Il 5% di un indirizzo non valido può sembrare grande, ma se controllo i miei amici di Facebook, penso che più del 5% di loro non utilizza mai il proprio account e non sarei sorpreso se l'indirizzo utilizzato quando ha effettuato l'accesso ora non è valido.

+0

Grazie per averlo estratto dai documenti! Non penso davvero che Facebook controlli se l'email dell'utente è valida col passare del tempo. Puoi semplicemente collegare i documenti per riferimento? –

+0

terminato. Non penso che Facebook controlli, ma penso che Facebook invii e-mail agli utenti per vari motivi (notifica, annuncio, ecc.). Quindi Facebook è a conoscenza se l'e-mail è valida o no! –

+1

Facebook controlla nel tempo se l'e-mail di un utente è valida. Ho questo problema con il mio account Facebook. In questo momento facebook pensa che la mia email non sia valida. E non ritorna in Graph Explorer – Karl

4

Gli utenti non devono sempre fornire un indirizzo e-mail per poter utilizzare Facebook. Possono anche registrarsi tramite SMS, anche se è molto meno comune.

In breve, FB non avrà sempre un indirizzo e-mail, quindi non può servirlo alla tua app.

+0

Tutti i miei utenti sono in Giappone, dove gli SMS praticamente non esistono .. Mi chiedo, ci sono altri modi per registrarsi a Facebook senza un indirizzo email? –

2

provare:

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

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

Oppure:

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

PROBLEMI:

  • L'utente ha modificato la visibilità del proprio indirizzo e-mail a "solo io", e quindi non hai modo di ottenerlo
  • L'utente si è registrato con SMS anziché e-mail come indicato nella risposta precedente.

ALTERNATIVA:

Se è assolutamente necessario contattare l'utente, ma non si può ottenere il suo indirizzo e-mail nPuoi ancora ottenere la sua e-mail di Facebook (tutti hanno questa email): "[email protected]" .

Se l'utente utilizza un server POP, riceverà direttamente l'e-mail in GMail o altri, in caso contrario riceverà la sua e-mail come messaggio privato. L'unico inconveniente se questo metodo è che la tua email deve essere "plain/text" e non "HTML".

+0

Non penso che tu capisca la domanda - FB non restituisce l'e-mail nonostante il metodo che provo ad ottenerlo (anche in FB api explorer) –

+0

Sì, ho capito la tua domanda, per favore controlla la mia risposta aggiornata. – glautrou

+0

no, non lo fai. Ho dato una taglia per far scovare qualcuno tramite documenti o forse qualche dipendente fb riuscendo a dirmi perché e in quali casi non riceverei l'indirizzo email dell'utente. –

1

Una cosa è Users don't always have to provide an email address in order to use Facebook(could have registered through mobile) - come citato da Colm. A parte questo -

Verificare che l'utente abbia definitivamente concesso l'autorizzazione estesa email o che non sia stata successivamente revocata. Per avere un controllo su questo si potrebbe usare i permessi API-

/USER/permissions 
0

Ho avuto un problema simile & Ho trovato la causa per questo. Questo problema si verifica per gli utenti che non hanno impostato il proprio indirizzo email principale (hanno molti indirizzi email ma non hanno indicato quale è il loro indirizzo email principale) nella scheda Impostazioni account generale.

Ho provato a utilizzare tali account su vari siti famosi che hanno accesso Facebook & anche se non potevano recuperare l'indirizzo email da tali account.

Quindi, non è il problema con il codice (supponendo che tu abbia chiesto i permessi). Dobbiamo solo gestire tali scenari & per far sapere agli utenti che non abbiamo ricevuto il loro indirizzo email. Come fa Klout.

Grazie

0

In aggiunta a quanto sopra scritto @Jigar Jain, gli utenti possono effettivamente deselezionare il permesso di posta elettronica durante il segno afflusso. Se questo è il caso, il suo indirizzo email non verrà restituito da Facebook.

Sta a te implementare una logica che rende l'accesso non riuscito se l'utente deseleziona l'autorizzazione e-mail, per costringere gli utenti a scegliere un altro metodo di accesso che garantisca il ritorno dell'indirizzo email dell'utente.

Problemi correlati