如何让用户在Firebase中注销?

Suz*_*ruz 20 authentication android firebase firebase-authentication

我正在使用Firebase身份验证在Android中创建一个简单的身份验证应用 直到现在我成功签署了用户,但问题是用户仍然登录,我找不到签署他的方法.

这是我的MainActivity.java代码

public class MainActivity extends AppCompatActivity {

    private FirebaseAuth mAuth;
    private FirebaseAuth.AuthStateListener mAuthListener;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        //tracking the sign in and singn out operations
        mAuth = FirebaseAuth.getInstance();
        mAuthListener = new FirebaseAuth.AuthStateListener(){
            @Override
            public void onAuthStateChanged(@NonNull FirebaseAuth firebaseAuth) {
                FirebaseUser user = firebaseAuth.getCurrentUser();
                if (user!=null){
                    System.out.println("User logged in");
                }
                else{
                    System.out.println("User not logged in");
                }
            }
        };
    }


    public void onStart(){
        super.onStart();
        mAuth.addAuthStateListener(mAuthListener);
    }
    public void onStop(){
        super.onStop();
        if (mAuthListener != null) {
            mAuth.removeAuthStateListener(mAuthListener);

        }
    }


    public void buttonClicked(View view){

        EditText editemail = (EditText) findViewById(R.id.email);
        EditText editpass = (EditText) findViewById(R.id.password);

        String email = editemail.getText().toString();
        String password = editpass.getText().toString();


        mAuth.signInWithEmailAndPassword(email, password)
                .addOnCompleteListener(this, new OnCompleteListener<AuthResult>() {
                    @Override
                    public void onComplete(@NonNull Task<AuthResult> task) {
                     //   Log.d(TAG, "signInWithEmail:onComplete:" + task.isSuccessful());
                        Toast.makeText(MainActivity.this, "Authentication Success.",
                                Toast.LENGTH_SHORT).show();
                        startActivity(new Intent(MainActivity.this,Success.class));
                        // If sign in fails, display a message to the user. If sign in succeeds
                        // the auth state listener will be notified and logic to handle the
                        // signed in user can be handled in the listener.
                        if (!task.isSuccessful()) {
                           // Log.w(TAG, "signInWithEmail", task.getException());
                            Toast.makeText(MainActivity.this, "Authentication failed.",
                                    Toast.LENGTH_SHORT).show();
                        }

                        // ...
                    }
                });
    }



}
Run Code Online (Sandbox Code Playgroud)

sau*_*xit 26

使用此代码 FirebaseAuth.getInstance().signOut();


Md.*_*moy 20

你可以简单地称之为

FirebaseAuth.getInstance().signOut();
Run Code Online (Sandbox Code Playgroud)

如果您想在退出后执行某些操作,请使用此操作.

public void onClick(View v) {
    if (v.getId() == R.id.sign_out) {
        AuthUI.getInstance()
            .signOut(this)
            .addOnCompleteListener(new OnCompleteListener<Void>() {
                public void onComplete(@NonNull Task<Void> task) {
                    // user is now signed out
                    startActivity(new Intent(MyActivity.this, SignInActivity.class));
                    finish();
                }
            });
        }
    }
Run Code Online (Sandbox Code Playgroud)

  • 为了添加 .addOnCompleteListener 进行注销,您需要实现 Firebase UI,如 github 上的文档所述“身份验证流程的入口点是 com.firebase.ui.auth.AuthUI 类”。最新版本在这里https://github.com/firebase/FirebaseUI-Android/blob/master/auth/README.md#configuration (2认同)

小智 8

试试这个

FirebaseAuth fAuth = FirebaseAuth.getInstance();
 fAuth.signOut();
Run Code Online (Sandbox Code Playgroud)

  • 除非你需要`fAuth`用于其他东西,`FirebaseAuth.getInstance().signOut();`工作正常 (6认同)

Yas*_*han 8

这可以通过使用AuthStateListener来解决

//Declaration and defination
private FirebaseAuth firebaseAuth;
FirebaseAuth.AuthStateListener authStateListener = new FirebaseAuth.AuthStateListener() {
    @Override
    public void onAuthStateChanged(@NonNull FirebaseAuth firebaseAuth) {
        if (firebaseAuth.getCurrentUser() == null){
            //Do anything here which needs to be done after signout is complete
            signOutComplete();
        }
        else {
        }
    }
};

//Init and attach
firebaseAuth = FirebaseAuth.getInstance();
firebaseAuth.addAuthStateListener(authStateListener);

//Call signOut()
firebaseAuth.signOut();
Run Code Online (Sandbox Code Playgroud)

片段:https : //codepad.co/snippet/aPeehdoD


cap*_*ala 6

如果您使用的是firebaseAuthUI,那么推荐的方法是

public void onClick(View v) {
if (v.getId() == R.id.sign_out) {
    AuthUI.getInstance()
        .signOut(this)
        .addOnCompleteListener(new OnCompleteListener<Void>() {
            public void onComplete(@NonNull Task<Void> task) {
                // user is now signed out
                startActivity(new Intent(MyActivity.this, SignInActivity.class));
                finish();
            }
        });
    }
}
Run Code Online (Sandbox Code Playgroud)

根据firebaseAuthUI github指南.


Jd *_*ati 5

Firebase auth是提供注销方法。

 FirebaseAuth.getInstance().signOut();
Run Code Online (Sandbox Code Playgroud)