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