Die Firebase-Methode createUser()
nimmt ein E-Mail- und Kennwort-Feld an. Was aber, wenn ich dem Benutzer auch einen benutzerdefinierten Benutzernamen wie Snapchat, Instagram, StackOverflow usw. zulassen möchte? Gibt es eine Möglichkeit, die vorhandene Methode so zu ändern, dass auch dieses Feld akzeptiert wird, oder muss Push manuell ausgeführt werden, und wenn ja, wie?
Dies ist mein erster Versuch, die gewünschten Benutzerinformationen zu speichern:
Firebase ref = new Firebase(firebaseURL);
ref.createUser(email, password, new Firebase.ValueResultHandler<Map<String, Object>>() {
@Override
public void onSuccess(Map<String, Object> result) {
System.out.println("Successfully created user account with uid: " + result.get("uid"));
//Sign user in
Firebase ref = new Firebase(firebaseURL);
ref.authWithPassword(email, password, new Firebase.AuthResultHandler() {
@Override
public void onAuthenticated(AuthData authData) {
System.out.println("User ID: " + authData.getUid() + ", Provider: " + authData.getProvider());
//Save user info
Firebase userRef = new Firebase(firebaseURL + "Users/");
User user = new User(username, authData.getUid());
userRef.setValue(user);
Ist das eine gute Praxis? Ich dachte mir, das Speichern der UID mit dem Benutzernamen könnte mir bei der zukünftigen Bearbeitung von Änderungen usw. helfen. Soll ich auch die updateChildren()
- oder Push()
-Methode implementieren, damit die Einträge nicht überschrieben werden, wenn dies eine Social Media-App ist?
Dies ist mein zweiter Versuch:
@Override
public void onAuthenticated(AuthData authData) {
System.out.println("User ID: " + authData.getUid() + ", Provider: " + authData.getProvider());
//Save user info and username
Firebase ref = new Firebase(firebaseURL);
Map<String, String> map = new HashMap<String, String>();
map.put("email", email);
map.put("username", username);
map.put("provider", authData.getProvider());
ref.child("users").child(authData.getUid()).setValue(map);
Ein Formular mit drei Feldern anzeigen:
Senden Sie die letzten beiden an die createUser()
-Methode von Firebase. Speichern Sie dann im Beendigungsrückruf alle Informationen in Ihrer Firebase-Datenbank.
var userName, emailAddress, password;
// TODO: read these values from a form where the user entered them
var ref = new Firebase("https://<YOUR-FIREBASE-APP>.firebaseio.com");
ref.createUser({
email : emailAddress,
password : password
}, function(error, authData) {
if (error) {
console.log("Error creating user:", error);
} else {
// save the user's profile into the database so we can list users,
// use them in Security and Firebase Rules, and show profiles
ref.child("users").child(authData.uid).set({
provider: authData.provider,
name: userName
});
}
});
Weitere Informationen finden Sie auf dieser Seite unter Speichern von Benutzerdaten in den Firebase-Dokumenten.
Ja, es gibt eine Möglichkeit, Benutzerinformationen in Firebase zu aktualisieren. Alles, was Sie brauchen - um diesen Artikel in den Firebase-Dokumenten zu lesen und die hier beschriebene Methode zu implementieren Benutzerinfo aktualisieren
Mit dieser Methode können Sie die Eigenschaft diplayName des FirabaseUser-Objekts aktualisieren. Legen Sie einfach den Benutzernamen für die Eigenschaft displayName fest und bestätigen Sie Ihre Änderungen.
Ich hoffe, dies wird dir helfen.
Hier ist eine Möglichkeit, die registrierten Details in der Datenbank zu speichern.
Map<String, String> parameters = new HashMap<>();
FirebaseDatabase mFirebaseInstance;
parameters.put(Constant.TAG_USER, strUsrS.trim());
parameters.put(Constant.TAG_EMAIL, strEmailS.trim());
parameters.put(Constant.TAG_PASS, strPassS.trim());
//use this if needed(pushId)
String pushId = mFirebaseInstance.getReference(YOUR TABLE NAME).getRef().Push().getKey();
parameters.put(Constant.TAG_KEY, pushId.trim());
mFirebaseInstance.getReference(YOUR TABLE NAME).getRef().child(strUsrS.trim()).setValue(parameters);
Probieren Sie diese Implementierung aus und führen Sie sie aus ... Vielen Dank
Ich hoffe, dass Sie wissen, wie Sie eine Tabelle mit den erforderlichen Feldern in Firebase ändern (erstellen).