使用firebase添加额外的用户信息

时间:2016-08-22 10:19:50

标签: android firebase firebase-realtime-database firebase-authentication

我已将firebase auth与我的Android应用程序集成。假设用户有邮件abc@abc.com。我想向用户添加一些额外的信息,如用户名,职业和地址。如何将用户auth表与我的Android应用程序连接起来呢?

我需要为此编写任何API吗?

3 个答案:

答案 0 :(得分:15)

首先,在db中创建一个users目录。然后,使用您从authn流程获得的用户唯一ID,将用户信息存储在users/{userid}下。

要实现此目的,您需要了解Firebase数据库的详细信息。见这里:https://firebase.google.com/docs/database/android/save-data

答案 1 :(得分:13)

您无需编写任何自定义代码即可执行此操作。 Firebase已经具备了您可以使用的功能。

您需要做的第一件事是确保用户只能访问他们存储的数据。为此,请转到Database/Rules并将规则更改为:

{
"rules": {
  "my_app_user": {
    "$uid": {
      ".write": "auth != null && auth.uid == $uid",
      ".read": "auth != null && auth.uid == $uid"
     }
   }
 }
}

然后,要将新详细信息保存在Firebase数据库中,请执行以下操作:

        MyAppUser user = new MyAppUser();
        user.setAddressTwo("address_two");
        user.setPhoneOne("phone_one");
        ...

        mDatabaseReference.child("my_app_user").child(firebaseUser.getUid()).setValue(user).
                addOnCompleteListener(DetailsCaptureActivity.this,
                                   new OnCompleteListener<Void>() {
                    @Override
                    public void onComplete(@NonNull Task<Void> task) {
                        if (task.isSuccessful()) {
                            ...

子代my_app_user的名称必须与您的代码和Firebase规则相匹配,否则它将无法保留。

如果一切按预期进行,您应该在数据库中看到详细信息:

enter image description here

答案 2 :(得分:3)

您必须创建另一个数据库表格&#34; user&#34;。成功登录后,首次注册时必须在用户表中创建一个新行。

public static void writeNewUser(DatabaseReference databaseReference, String userId, String name, String email, int accountType) {
    User user = new User(name, email, accountType);

    databaseReference.child("users").child(userId).setValue(user);
}

您可以参考https://github.com/firebase/quickstart-android/tree/61f8eb53020e38b1fdc5aaeddac2379b25240f3b/database