是否可以仅使用Android的Firebase SDK取消Firebase登录过程?

Ale*_*kov 5 java authentication android firebase

我希望我的应用程序的用户能够在其运行时取消Firebase登录过程。但是我在Firebase SDK中没有看到直接的处理程序。Sign-In方法返回Task<AuthResult>,这是不可取消的。我可以用来取消的最佳方法是什么?有没有比拟订额外的可取消异步任务更好的方法?

我的代码与Firebase指南中的代码完全相同。

public class LoginActivity extends AppCompatActivity{
    private FirebaseAuth mFirebaseAuth;
    private FirebaseAuth.AuthStateListener mFirebaseAuthListener;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(...);
        mFirebaseAuth = FirebaseAuth.getInstance();
        mFirebaseAuthListener = new FirebaseAuth.AuthStateListener() {
            @Override
            public void onAuthStateChanged(@NonNull FirebaseAuth firebaseAuth) {
                FirebaseUser user = firebaseAuth.getCurrentUser();
                if (user != null) {
                    // User is signed in
                    onSignIn();
                } else {
                    // User is signed out
                    onSignOut();
                }
                // ...
            }
        };
    }

    private void signIn(String email, String password){
        mFirebaseAuth
            .signInWithEmailAndPassword(email, password) // returns noncancelable Task<AsyncResult>
            .addOnCompleteListener(this, new OnCompleteListener<AuthResult>() {
                @Override
                public void onComplete(@NonNull Task<AuthResult> task) {
                    // 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()) {
                        Toast.makeText(EmailPasswordActivity.this, "Authentication failed.",
                            Toast.LENGTH_SHORT).show();
                    }

                    // ...
                }
            });
    }

    @Override
    public void onStart() {
        super.onStart();
        mFirebaseAuth.addAuthStateListener(mFirebaseAuthListener);
    }

    @Override
    protected void onStop() {
        super.onStop();
        if (mFirebaseAuthListener != null) {
            mFirebaseAuth.removeAuthStateListener(mFirebaseAuthListener);
        }
    }
}
Run Code Online (Sandbox Code Playgroud)