繁体   English   中英

如何在创建新的FirebaseUser之前保存已登录的FirebaseUser

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM