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

Jas*_*rne 31 android firebase firebase-authentication firebase-realtime-database

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

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

Ugu*_*rim 17

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

为此,您需要了解Firebase数据库的详细信息.请参阅此处:https://firebase.google.com/docs/database/android/save-data


ojo*_*ifu 14

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

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

{
"rules": {
  "my_app_user": {
    "$uid": {
      ".write": "auth != null && auth.uid == $uid",
      ".read": "auth != null && auth.uid == $uid"
     }
   }
 }
}
Run Code Online (Sandbox Code Playgroud)

然后,要将新详细信息保存在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()) {
                            ...
Run Code Online (Sandbox Code Playgroud)

孩子的名字my_app_user必须与您的代码和Firebase规则相匹配,否则它将不会持续存在.

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

在此输入图像描述


小智 6

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

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);
}
Run Code Online (Sandbox Code Playgroud)

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