使用 firebase 添加额外的用户信息
Posted
技术标签:
【中文标题】使用 firebase 添加额外的用户信息【英文标题】:Add extra User Information with firebase 【发布时间】:2016-12-28 20:30:47 【问题描述】:我已将 firebase 身份验证与我的 android 应用程序集成。假设用户有一封邮件abc@abc.com
。我想向用户添加一些额外的信息,例如用户名、职业和地址。我怎样才能将用户身份验证表与我的 android 应用程序连接起来呢?
我需要为此编写任何 API 吗?
【问题讨论】:
想要将用户信息存储在像真实数据库这样的表中或者想要从邮件ID中获取个人信息 是的,我希望它们像真正的数据库一样。可能是一个 nosql json 就足够了,或者 table 可以继续使用。现在我正在调用 auth.createUserWithEmailAndPassword 来创建用户,我在控制台中找到了它们。 你浏览过firebase中的实时数据库吗 firebase.google.com/docs/database/android/save-data 参考此链接可能对您有所帮助 它帮助了谢谢:) 【参考方案1】:首先,在 db 中创建一个users
目录。然后,使用您从 authn 进程获得的用户唯一 ID,将用户信息存储在 users/userid
下。
要实现这一点,您需要了解 Firebase 数据库的详细信息。见这里:https://firebase.google.com/docs/database/android/save-data
【讨论】:
有没有办法创建自定义 uid,就像我想使用电子邮件和密码创建用户但 uid 为 1 @MasterYoda Firebase 数据库不使用增量作为其唯一 ID 是有原因的。相反,他们提供自己的唯一标识符 @teckwei ,有一个名为firebase-admin
的节点模块可以使用它。谢谢。几天前我收到了。【参考方案2】:
您无需编写任何自定义代码即可执行此操作。 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 规则中都匹配,否则它将不会持续存在。
如果一切正常,您应该会在数据库中看到详细信息:
【讨论】:
【参考方案3】:您必须创建另一个数据库表,例如“用户”。登录成功后,第一次注册需要在用户表中新建一行。
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
【讨论】:
以上是关于使用 firebase 添加额外的用户信息的主要内容,如果未能解决你的问题,请参考以下文章