it-swarm.com.de

Wie geben Sie einen Benutzernamen ein, wenn Sie E-Mail und Passwort mit Firebase (BaaS) in einer Android-App speichern?

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);
21

Ein Formular mit drei Feldern anzeigen:

  1. Username
  2. E-Mail-Addresse
  3. Passwort

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.

14

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.

9
ostap_holub

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).

Verwandte Fragen und Diskussionen mit Lösungen

0
Arnold Brown