2016-06-20 11 views
6

Come posso aggiungere ulteriori attributi numero di telefono e indirizzo a questo set di dati? Sembra che la documentazione di Firebase non specifichi nulla a riguardo.Come aggiungere ulteriori informazioni a firebase.auth()

Ho implementato il login, la registrazione e aggiornamento utilizzando firebase.auth()

accesso:

//Email Login 
firebase.auth().signInWithEmailAndPassword(email, password).then(
    ok => { 
     console.log("Logged in User",ok.user);    
    }, 
    error => { 
     console.log("email/pass sign in error", error); 
    } 
); 

Register:

//Sign Up 
firebase.auth().createUserWithEmailAndPassword(email, password).then(
    ok => { 
     console.log("Register OK", ok); 
    }, 
    error => { 
     console.log("Register error", error); 
    } 
) 

Aggiornamento:

//User Authentication 
firebase.auth().onAuthStateChanged(function(user) { 
    if (user) { 
    $scope.data=user; 
    } else { 
    // No user, Redirect to login page 
    } 
}); 

//Save Function 
$scope.save=function(values){ 

    $scope.data.updateProfile({ 

     displayName: "Test User", 
     email: "[email protected]", 
    /* phone: 123412341, 
     address: "Temp Address",*/ 
     photoURL: "www.example.com/profile/img.jpg" 

    }).then(function() { 

    // Update successful. 

    }, function(error) { 

    // An error happened. 

    }); 

}; 
+0

Per favore, se la risposta risolto il tuo problema accettarlo in modo che altre persone possano conoscere la soluzione. Inoltre, fatemi sapere se avete altre domande :) –

+0

Questa è una bella implementazione: http://stackoverflow.com/questions/32151178/how-do-you-include-a-nomeutente-quando-storing-email- e-password-using-firebase-ba –

+0

Sì, questa è l'implementazione di Firebase. Ma è limitato solo a queste proprietà: https://firebase.google.com/docs/reference/ios/firebaseauth/interface_f_i_r_user#properties Nel link che ho postato nel commento alla mia risposta ne parlano;) –

risposta

3

Per quanto ne so, è necessario gestire i profili utente da soli se si desidera disporre di più campi rispetto all'utente predefinito fornito da Firebase.

È possibile eseguire questa operazione creando un riferimento in Firebase per mantenere tutti i profili degli utenti.

users: { 
    "userID1": { 
    "name":"user 1", 
    "gender": "male" 
    }, 
    "userID2": { 
    "name":"user 2", 
    "gender": "female" 
    } 
} 

È possibile utilizzare onAuthStateChanged per rilevare quando l'utente è connesso, e se è possibile utilizzare once() per recuperare i dati degli utenti

firebaseRef.child('users').child(user.uid).once('value', callback) 

Speranza che aiuta

+0

Attualmente questa è una buona soluzione. Ma sarei felice di sapere se ci sono soluzioni migliori per lo stesso –

+1

Questo è il modo consigliato per farlo. Una soluzione migliore potrebbe essere una soluzione più adatta alle tue esigenze. È necessario strutturare i dati in base a come si desidera recuperarli. Ad esempio, se vuoi mantenere alcune informazioni segrete puoi fare: "userId": {"credit-card": "0000", "public": {"name": "Devid", "genere": "dragon" }} e utilizzare le regole di sicurezza per consentire ad altri utenti di leggere solo il nodo "pubblico". Spero che aiuti :) Sono qui per qualsiasi altra domanda –

+0

Questa risposta potrebbe essere utile: http://stackoverflow.com/a/37420701/4695325 –