首页 > 解决方案 > 如何在 firebase auth 和 firebase - 实时数据库中获得相同的 id?

问题描述

如何为 firebase auth 和 firebase 实时数据库获取相同的 id?当用户注册他们的帐户时,他们会在数据库中获取他们的 id,但后来我意识到 Id 不同?如何确保两个数据库的 ID 相同? 不同的 ID

//create customer
firebaseAuth.createUserWithEmailAndPassword(email, password)
        .addOnCompleteListener(RegisterActivity.this, new OnCompleteListener<AuthResult>() {
            @Override
            public void onComplete(@NonNull Task<AuthResult> task) {
                if (task.isSuccessful()) {
                    authData = firebaseAuth.getUid();
                    String id = databaseReference.push().getKey();
                    Customer info = new Customer(id, name, email, address, telephone_number);
                    FirebaseDatabase.getInstance().getReference("Customer")
                            .child(Objects.requireNonNull(FirebaseAuth.getInstance().getCurrentUser()).getUid())
                            .setValue(info).addOnCompleteListener(new OnCompleteListener<Void>() {
                        @Override
                        public void onComplete(@NonNull Task<Void> task) {
                            regProgressBar.setVisibility(View.VISIBLE);
                            Toast.makeText(RegisterActivity.this, "Registration Complete", Toast.LENGTH_SHORT).show();
                            startActivity(new Intent(getApplicationContext(), MainActivity.class));
                        }
                    });
                }
            }
        });


 FirebaseDatabase.getInstance().getReference("Customer")
                                            .child(Objects.requireNonNull(FirebaseAuth.getInstance().getCurrentUser()).getUid())

我试过用这个替换上面的编码

 FirebaseDatabase.getInstance().getReference("Customer")
                                            .child(id)

我想达到的相同ID

我得到了相同的 ID,但后来我遇到了另一个问题,无法显示我的个人资料活动

java.lang.NullPointerException:尝试从空对象引用上的字段“java.lang.String com.example.gerobokgo.Model.Customer.name”读取

所以我决定把第一个编码改回来。

标签: javafirebasefirebase-realtime-databasefirebase-authentication

解决方案


没关系我已经解决了这个问题

只需删除String id = databaseReference.push().getKey(); 并更改FirebaseDatabase.getInstance().getReference("Customer").child(Objects.requireNonNull(FirebaseAuth.getInstance().getCurrentUser()).getUid()).setValue(info).addOnCompleteListener(new OnCompleteListener<Void>()

databaseReference.child(authData).setValue(info).addOnCompleteListener(new OnCompleteListener<Void>()

而已!


推荐阅读