gpt4 book ai didi

android - SignOut 使无法保存在 firestore 中

转载 作者:行者123 更新时间:2023-11-29 18:52:45 25 4
gpt4 key购买 nike

我正在为一个应用程序进行注册 Activity ,但发生了一些奇怪的事情,你能帮帮我吗?

这是用于注册的代码,如果我评论 signOut 函数它会起作用,但我需要它在将数据保存在 FirebaseAuth 和 Firestore 中后注销。

我什至没有得到日志。

public void registUser() {

mAuth = FirebaseAuth.getInstance();
mAuth.createUserWithEmailAndPassword(user.getEmail(), user.getPassword()).addOnCompleteListener(SignUpUserActivity.this, new OnCompleteListener<AuthResult>() {
@Override
public void onComplete(@NonNull Task<AuthResult> task) {
if (task.isSuccessful()) {

Toast.makeText(SignUpUserActivity.this, "Sucesso", Toast.LENGTH_SHORT).show();
// Sign in success, update UI with the signed-in user's information
//FirebaseUser user = mAuth.getCurrentUser();
user.setId(task.getResult().getUser().getUid());

user.save();

mAuth.signOut();
finish();



} else {
String erro = "";
try {
throw task.getException();


} catch (FirebaseAuthWeakPasswordException e) {
erro = "Digite uma senha mais forte";
} catch (FirebaseAuthInvalidCredentialsException e) {
erro = "Email invalido";
} catch (FirebaseAuthUserCollisionException e) {
erro = "Email Registado";
} catch (Exception e) {
erro = "Erro generico";
e.printStackTrace();
}
Toast.makeText(SignUpUserActivity.this, erro, Toast.LENGTH_SHORT).show();

}

}

});
}

我认为这是因为在数据库中保存内容需要很长时间。我对 Auth 部分没有任何问题。

谢谢。

这是保存函数。

 public void save(){


DocumentReference reference = FirebaseFirestore.getInstance().document("/Clinicas/" + clinic + "/Profissionais/" + id + "/");
Map<String, Object> dataToSave = new HashMap<String, Object>();
dataToSave.put("Name", name);
dataToSave.put("email", email);
dataToSave.put("clinic", clinic);
dataToSave.put("Job", job);
reference.set(dataToSave).addOnSuccessListener(new OnSuccessListener<Void>() {
@Override
public void onSuccess(Void aVoid) {
Log.d("artur", "Saved");
}
}).addOnFailureListener(new OnFailureListener() {
@Override
public void onFailure(@NonNull Exception e) {
Log.w("artur", "Not Saved",e);
}
});
}

最佳答案

要解决这个问题,请使用以下代码:

user.setId(task.getResult().getUser().getUid());
userRef.set(user).addOnSuccessListener(new OnSuccessListener<QuerySnapshot>() {
@Override
public void onSuccess(QuerySnapshot queryDocumentSnapshots) {
mAuth.signOut();
}
});

当您注销时,您需要确保您的写入操作已完成,这只能使用 addOnSuccessListener 来实现。

关于android - SignOut 使无法保存在 firestore 中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50588249/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com