如何使用firebase登录后退出?

时间:2017-04-15 06:33:46

标签: 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();
                    }

                    // ...
                }
            });
}}

1 个答案:

答案 0 :(得分:0)

您可以直接调用此

FirebaseAuth.getInstance().signOut();

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

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();
            }
        });
    }
}