我正在尝试在调用sendEmailVerification()方法时将对象插入Firebase数据库。

注意:创建新用户帐户后,我调用了sendEmailVerification()。

RegistrationModel是我的Model类。

sendEmailVerification的代码:

final FirebaseUser user = FirebaseAuth.getInstance().getCurrentUser();

user.sendEmailVerification()
   .addOnCompleteListener(new OnCompleteListener<Void>() {
          @Override
          public void onComplete(@NonNull Task<Void> task) {
         if (task.isSuccessful()) {
                            // email sent
                            String userId = savePref.getUid();
                            registrationModel = new RegistrationModel();
                            registrationModel.setStatus(ONLINE_STATUS);
                            registrationModel.setName("");
                            registrationModel.setPassword(passwordFromRegister);
                            registrationModel.setKey("");
                            registrationModel.setEmailId(user.getEmail());
                            registrationModel.setGenerated_links("");
                            registrationModel.setNO_OF_GENERATED_LINK(NO_OF_GENERATED_LINK);
                            registrationModel.setNO_OF_CHATING_PERMISSION(NO_OF_CHATING_PERMISSION);

                        FirebaseDatabase.getInstance().getReference().child("RegistrationModel")
                                    .child(userId).setValue(registrationModel);

                        }

                    }
                });


我搜索了很多,但是没有找到任何解决方案!

注意我收到此警告setValue at /RegistrationModel/KxvrHcEQXdRnV45XqZecUDtUX8c2 failed: DatabaseError: Permission denied

最佳答案

如果您查看documentation for sendEmailVerification,则会显示:


public Task<Void> sendEmailVerification (ActionCodeSettings actionCodeSettings)

  
  为用户启动电子邮件验证。包含一个ActionCodeSettings以允许通过电子邮件链接回您的应用程序。
  
  返回一个
  Task跟踪发送操作的完成。


任务完成时发送至。这并不意味着用户已经单击以验证其电子邮件地址,也不意味着它们已通过身份验证。

我不太确定它会在哪里发生,但看起来您的身份验证状态正在以下之间丢失:

final FirebaseUser user = FirebaseAuth.getInstance().getCurrentUser();




FirebaseDatabase.getInstance().getReference().child("RegistrationModel")
                                .child(userId).setValue(registrationModel);

08-05 03:46