首页 > 解决方案 > 我可以在 DatabaseReferences 中使用 Firebase 用户身份验证吗?

问题描述

我有一个用于 firebase 和用户身份验证的数据库,但我不知道如何使用用户电子邮件或 UID 作为子参考。我正在使用 user.getEmail() 将他们的电子邮件作为字符串检索,然后将其放入 .child() 或 .getReference() 中。这样做时,它总是使我的应用程序崩溃。我相信这与我的组织方式有关,但我并不积极。有人有任何线索吗?


private FirebaseAuth mAuth;
FirebaseUser user;

private TextView mTextView;

private String email;
//private String other;

FirebaseDatabase testReference= FirebaseDatabase.getInstance();
DatabaseReference conditionRef=testReference.getReference();
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_test_page);

    mTextView=findViewById(R.id.Condition);

    mAuth=FirebaseAuth.getInstance();


    user=mAuth.getCurrentUser();
    if(user!=null){
        mTextView.setText("User on Page!");
        email=user.getEmail();
        conditionRef.child(email);
    }
    if(user==null)
        mTextView.setText("User not on Page");

}

标签: androidfirebasefirebase-realtime-databasefirebase-authentication

解决方案


如果您尝试将电子邮件发送到数据库,至少我认为您正在尝试这样做,请尝试以下操作:

if(user!=null){
    mTextView.setText("User on Page!");
    email=user.getEmail();
    conditionRef.child("users").child(user.getUid()).child("email").setValue(email);
}

您的数据库必须如下所示:

users
|
|----userID
     |
      ----"email":"someone@something.com"

推荐阅读