[英]How to save a signed in FirebaseUser before creating a new one
我正在尝试使用Firebase(身份验证)制作一个应用程序,该应用程序允许教师创建学生的用户,然后向该学生发送用户名和密码,然后让他登录。我的问题是,在老师之后,这样做正在创建用户,当前用户是学生的用户,当我尝试执行以下代码时:
private void signStu(String email,String password)
{
final FirebaseUser teacher=mAuth.getCurrentUser();
mAuth.createUserWithEmailAndPassword(email,password).addOnCompleteListener(new OnCompleteListener<AuthResult>() {
@Override
public void onComplete(@NonNull Task<AuthResult> task) {
FirebaseUser student=mAuth.getCurrentUser();
User newUser=new User(/*data i need to pass to the constructor, doesn't affect the result*/);
mAuth.updateCurrentUser(teacher); //Here it passes on the student user and not the teacher
}
});
}
因此,似乎mAuth.getCurrentUser()之前已更新为所有用法,因此教师变量在创建后变成了学生变量。 任何人都知道如何解决该问题或解决该问题的方法吗? 谢谢 !
FirebaseAuth.getInstance().signOut();
注销学生。 有关此后该怎么做的更多信息: 如何使用户退出Firebase? 。 您可以尝试注销用户并重新登录。也许正式的Firebase文档中的某些内容(如重新认证用户)可能会有所帮助。 在此链接中,给出了以下示例代码:
AuthCredential credential = EmailAuthProvider
.getCredential("user@example.com", "password1234"); //teacher info
// Prompt the user to re-provide their sign-in credentials
user.reauthenticate(credential)
.addOnCompleteListener(new OnCompleteListener<Void>() {
@Override
public void onComplete(@NonNull Task<Void> task) {
Log.d(TAG, "User re-authenticated.");
}
});
显然,如果您想采用这种方法,您也可以处理此服务器端。 Firebase踢出当前用户
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.