java - 如何在创建新用户之前保存已登录的 FirebaseUser
问题描述
我正在尝试使用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() 之前已经更新到它的所有用法,所以在创建之后,teacher 变量变成了 student 变量。任何人都知道如何解决这个问题,或者解决这个问题的方法?谢谢 !
解决方案
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 踢出当前用户
推荐阅读
- java - 编译器跳过字符串值数据成员
- javascript - 检查数组中的至少两个元素是否大于零 - JavaScript/Typescript
- r - 使用变量替换 R 中的确切字符串
- python - Python:将一个整数数组与 1 个空数组连接起来
- sql - ORACLE SQL如何使用自定义函数iside insert cte
- reactjs - 如何使用 jest 为 ReactTable(react table v6 库)编写单元测试用例
- oracle - Oracle APEX 源代码框架在哪里
- flutter - DateTime 对象不适用于 Dart 中的集合-if 功能
- ios - Alamofire 5.0 与 AlamofireNetworkActivityIndicator 2.4
- matplotlib - Holoviews 字体更改