如何在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);
用三个字段显示表单:
- 用户名
- 电子邮件地址
- 密码
将后两个发送给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相关的问题和讨论
- Android Studio:hover时javadoc为空
- 如何使用onSaveInstanceState()和onRestoreInstanceState()?
- Android Studio 3.0风味维度问题
- Android NDK C ++ JNI(找不到原生的实现…)
- Android imageView放大和缩小
- 插件太旧,请更新到更新的版本,或设置ANDROID_DAILY_OVERRIDE环境variables
- 在ValueEventListener中初始化后,全局variables的值将被重置
- 如何在Android中从图库中select多个图像?
- 使用Android Studio的Android库项目