如何在Android应用程序中使用Firebase(BaaS)存储电子邮件和密码时包含用户名?

Firebase的createUser()方法需要一个电子邮件和密码字段,但是如果我还想允许用户使用与Snapchat,Instagram,StackOverflow等类似的用户名呢? 有没有办法修改现有的方法来接受该字段,或者我需要手动推送和pipe理这些信息,如果是这样的话?

这是我第一次尝试存储所需的用户信息:

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

这是好的做法吗? 我想用UID存储用户名可能会帮助我在将来处理更改等。此外,我应该实施updateChildren()push()方法,以便这些条目不会被覆盖,如果这是一个社交媒体应用程序?

这是我第二次尝试:

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

用三个字段显示表单:

  1. 用户名
  2. 电子邮件地址
  3. 密码

将后两个发送给Firebase的createUser()方法。 然后在完成callback中,将所有信息存储在您的Firebase数据库中。

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

有关在Firebase文档中存储用户数据的详细信息,请参阅此页面。

是的,有一种方法可以更新Firebase中的用户信息。 您只需要 – 阅读Firebase文档中的这篇文章,并实现此处所述的方法更新用户信息

使用这个方法你可以更新FirabaseUser对象的diplayName属性。 只需为displayName属性设置用户名并提交更改。

我希望这会帮助你。

这里是将注册的详细信息存储在数据库中的一种方法,

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

尝试这个实现并执行… Thankyou

希望您了解如何使用firebase中的必填字段更改(创build)表格。

与解决scheme相关的问题和讨论