12

我已经整合了我的android应用的firebase auth。假设用户有邮件[email protected]。我想添加一些额外的信息给用户,如用户名称,职业和地址。我如何连接用户auth表与我的android应用程序来做到这一点?用firebase添加额外的用户信息

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

+0

难道要存储用户信息,像真正的数据库表或想获得从邮件的个人信息id –

+1

是的,我希望他们像一个真正的数据库。可能是一个nosql json就够了,否则table就会很好地继续下去。 现在我打电话给auth.createUserWithEmailAndPassword来创建用户,我在控制台中找到它们。 –

+0

你有没有通过实时数据库在firebase –

回答

7

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

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

+0

有没有办法创建自定义用户ID喜欢我想用电子邮件和密码创建用户,但用户名为1 –

+0

@MasterYoda有一个原因,为什么Firebase数据库不使用增量作为他们的唯一ID。相反,他们提供自己的唯一标识符 –

+0

@teckwei,有一个名为'firebase-admin'的节点模块可以使用。谢谢。我几天前得到它。 –

2

你必须创建另一个数据库表说“用户”。在成功登录后,首次注册时必须在用户表中创建一个新行。

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

5

你不需要编写任何自定义代码来做到这一点。 Firebase已具备您可以使用的功能。

您需要做的第一件事是确保用户只能访问他们存储的数据。要做到这一点,去Database/Rules和改变你的规则是:

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

然后保存在火力地堡数据库的新细节,这样做:

 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