我已将firebase auth与我的Android应用程序集成。假设用户有邮件abc@abc.com
。我想向用户添加一些额外的信息,如用户名,职业和地址。如何将用户auth表与我的Android应用程序连接起来呢?
我需要为此编写任何API吗?
答案 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规则相匹配,否则它将无法保留。
如果一切按预期进行,您应该在数据库中看到详细信息:
答案 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);
}