【发布时间】:2020-03-05 17:22:06
【问题描述】:
我的应用程序返回一个空 UID。在注册时,我正在使用电话身份验证来注册并从用户那里获取一些自定义字段,这些字段我保存在 Firebase 数据库中的当前用户 UID 下。在注册活动中,它完美地给了我 UID,但是当我通过凭据登录用户并成功登录时,它会将用户转移到 MainActivity,当时它给了我 null。
注意
我通过匹配我在注册时保存的数据库中的用户名和密码来登录用户。这是我没有使用任何 Firebase 登录方法的 UID 的问题吗?相反,我在登录活动中匹配来自数据库的值,并且在成功匹配时我登录了用户。因为如果有任何其他问题,它也不会在 Register Activity 上给我一个 UID,但是登录后它在 Main Activity 和 Profile Activity 给我 null 。
登录代码
FirebaseDatabase.getInstance().getReference().child("Content").child("Profiles").orderByChild("mobile_number").equalTo(mobileNum)
.addListenerForSingleValueEvent(new ValueEventListener() {
@Override
public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
if (dataSnapshot.exists()) {
for (DataSnapshot user : dataSnapshot.getChildren()) {
Profiles profiles = user.getValue(Profiles.class);
if (profiles.getPassword().equals(password)) {
progressDialog.dismiss();
startActivity(new Intent(LoginActivity.this, MainActivity.class));
}
else {
progressDialog.dismiss();
HelperClass.showSnakbarMsg(rootView, "Username or password did not match. Please try again.");
}
}
}
代码不工作
FirebaseAuth firebaseAuth = FirebaseAuth.getInstance();
String userId = firebaseAuth.getUid();
Log.d("user",userId);
登录后在 Main Activity 中返回 null。
如果我通过匹配 Firebase 实时数据库中的值登录,我是获取用户的 UID 还是获取 UID?必须使用一些 Firebase 身份验证来登录(电子邮件/密码或电话身份验证或 Gmail 登录等)
【问题讨论】:
-
请编辑问题以显示未按您期望的方式工作的代码。我们应该能够准确地追踪您在此处解释的内容。
-
添加您的活动代码,您正在执行登录过程和访问 uid。
-
@DougStevenson 编辑了代码
-
你完全错了,检查一下。 Firebase login and signup with username
-
@HaiderSaleem 这与我使用 firebase otp 创建用户(电话身份验证)和获取用户个人资料数据完全不同
标签: android firebase firebase-realtime-database firebase-authentication