为什么在调用sendEmailVerification()方法(Firebase Auth的方法)时没有将对象插入到firebase数据库中?

时间:2018-04-05 19:21:04

标签: android firebase firebase-realtime-database firebase-authentication firebase-cloud-messaging

我正在尝试在调用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

1 个答案:

答案 0 :(得分:1)

如果你看enter image description here它说:

public Task<Void> sendEmailVerification (ActionCodeSettings actionCodeSettings)
     

为用户启动电子邮件验证。接受ActionCodeSettings以允许链接回电子邮件中的应用程序。

     

返回一个   Task跟踪发送操作的完成情况。

当任务完成时,电子邮件已发送。这并不意味着用户已经点击验证他们的电子邮件地址,也不表示他们已经过身份验证。

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

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

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