Ricerca…


Come salvare i dati del profilo utente

Ogni utente autenticato ha un uid Firebase unico per tutti i provider e restituito nel risultato di ogni metodo di autenticazione.

Un buon modo per memorizzare i dati dell'utente è creare un nodo per conservare tutti i dati degli utenti e proteggerli usando le tue regole di sicurezza

- Banca dati

{
   "users": {
      "uid1" : {
         "name": "Steve",
         "surname": "Jobs"
      },
      "uid2" : {
         "name": "Bill",
         "surname": "Gates"
      }
   }
}

- Sicurezza

{
    "rules": {
        "users": {
            "$uid": {
                // If node's key matches the id of the auth user
                ".write": "$uid == auth.uid"
            }
        }
    }
}

Il $uid nelle regole di cui sopra è una cosiddetta "variabile del dollaro", che garantisce che le regole sottostanti siano applicate a tutti i nodi figli degli users . Per ulteriori informazioni, consultare la documentazione sull'utilizzo di $ Variabili per acquisire segmenti di percorso .

Perché salvare i dati dell'utente nel database

Firebase Authentication consente agli utenti della tua app di accedere con i social provider o la loro email + password. Ma cosa succede se si desidera memorizzare ulteriori informazioni su un utente, oltre a ciò che Firebase Authentication consente di specificare?

O se vuoi mostrare un elenco degli utenti nella tua app? Firebase Authentication non ha un'API per questo.

La maggior parte degli sviluppatori risolve questo problema memorizzando le informazioni aggiuntive in un database separato. Questo argomento spiega come memorizzare tali informazioni nel Database in tempo reale di Firebase .

Gestione dei dati dell'account utente nel database in tempo reale

Il sistema di autenticazione Firebase è la fonte di un utente uid , displayName , photoURL e forse email . Gli account basati su password impostano questi valori persistenti nel sistema di autenticazione tramite il metodo .updateProfile . Memorizzando questi valori nel database Realtime, rDB, il nodo users pone il problema dei dati non aggiornati. I nomi visualizzati, ad esempio, possono cambiare. Per mantenere questi valori sincronizzati, utilizzare l'archiviazione locale in concerto con .onAuthStateChange .

su ogni. .onAuthStateChange

  • getItem('displayName') e getItem('photoURL')
  • confronta con user.displayName e user.photoURL
  • se differente
    • setItem('displayName') e setItem('photoURL')
    • db.ref.child('users').update i valori di displayName e / o photoURL

.onAuthStateChange si .onAuthStateChange su ogni caricamento della pagina o ricarica, nonché su ogni modifica dello stato di autenticazione. Si spara potenzialmente spesso, ad esempio app multi pagina. Tuttavia, leggere e scrivere sull'archivio locale è sincrono e molto veloce, quindi non ci sarà alcun impatto notevole sulle prestazioni dell'app.



Modified text is an extract of the original Stack Overflow Documentation
Autorizzato sotto CC BY-SA 3.0
Non affiliato con Stack Overflow