我正在制作一个 Web 应用程序,它使用电子邮件和密码在 Firebase 上创建用户firebase.auth().createUserUsingEmailAndPassowrd()
创建帐户后,我立即根据 firebase 数据库上的表单值上传一些数据。
一切正常,但有时,在最坏的情况下,创建了用户,但由于网络问题,数据未上传。并且应用程序已经重定向到需要该数据的位置,并且整个应用程序失败。
如何确保仅当我尝试上传到数据库的数据也更新时才创建用户帐户。
摘要:确保在创建用户时上传一些数据,否则根本不会创建用户。
因为您非常害怕最坏的情况(这绝对是正常的),所以这里有一种方法:假设您有以下字段:电子邮件、密码和地址。地址字段是您需要存储在数据库中的字段(当然还有用户 uid)。
首先你尝试注册用户,然后像费兹说, 你用onCompleteListener
像这样
mAuth.createUserWithEmailAndPassword(email, password)
.onCompleteListener(... {
... onComplete (... task) {
if (task.isSuccessful()) {
doInsertTheData();
}
...
当任务成功后,您想要将数据插入数据库,这doInsertTheData()
是为
private void doInsertTheData() {
// I believe you familiar with Firebase database inserting method, so I skip the long part
FirebaseDatabase...setValue(address, new CompletionListener() {
... onComplete(FirebaseError firebaseError, ...) {
if (firebaseError == null) {
// if your code reach here, its a happy ending
} else {
// if it reach here, then you can remove the signed in user
// and tell the user that their registration is failed and should try again
FirebaseAuth.getInstance().getCurrentUser().delete();
}
就是这样,只要数据库保存过程失败,用户凭证就会被删除
注意:当我输入这个时,我实际上想到了另一种方法,但它太复杂了,我认为这个更容易理解(不过我还没有尝试/使用这个)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)