2016-07-06 33 views

risposta

9

Credo che se si desidera solo per aggiornamento del profilo degli utenti:

firebase.auth().onAuthStateChanged(function(user) { 
    if (user) { 
    // User is signed in. 
    user.updateProfile({ 
     displayName: "Random Name" 
    }).then(function() { 
     // Update successful. 
    }, function(error) { 
     // An error happened. 
    }); 

    } else { 
    // No user is signed in. 
    } 
}); 

Inoltre: https://firebase.google.com/docs/auth/web/manage-users

+0

Sì, so quali campi authData ma so anche che authData ha un campo chiamato "displayName" che è nullo per quel tipo di autenticazione. Ad esempio, quando utilizzo l'autenticazione di Google, ho in risposta displayName il mio nome e cognome Google. Quindi la mia domanda è, posso impostare tali proprietà per gli utenti che creo manualmente nella console di Firebase. Grazie. – elzoy

+3

Non c'è modo di impostare il nome visualizzato nella console (tuttavia, una buona richiesta di funzionalità). Fino a che esiste, chiamare l'API è la strada da percorrere. –

+2

Ho trovato questa pagina googling "console utente modifica profilo firebase" perché anch'io volevo impostare il 'displayName' di un utente tramite la console e sono stato sorpreso di scoprire che non potevo. Sicuramente una funzionalità che dovrebbe essere aggiunta. – odigity

4

ho la soluzione per il vostro problema. Quindi ecco:

Quando si crea un utente lo si crea solo con e-mail e password ma è possibile e il displayName nella promessa, quindi all'interno del metodo .then() si chiama il metodo updateProfile e si è pronti, destra verso il basso è il codice:

onSubmit(formData) { 
    if(formData.valid) { 
     console.log(formData.value); 
     this.af.auth.createUserWithEmailAndPassword(
     formData.value.email, 
     formData.value.password 
    ).then(
     (success) => { 
     console.log(success); 
     success.updateProfile({ 
      displayName: "Example User", 
      photoURL: "https://example.com/jane-q-user/profile.jpg" 
     }).catch(
     (err) => { 
     this.error = err; 
     });   
     this.router.navigate(['/login']) 
     }).catch(
     (err) => { 
     this.error = err; 
     }) 
    } 
    } 

si noti che nel mio esempio il displayName è impostato su "esempio utente", nel vero e proprio app basta aggiungere il parametro come nel mio caso dovrebbe essere -> displayName: formdata. valore.name

Grazie

Problemi correlati