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)
| 归档时间: |
|
| 查看次数: |
443 次 |
| 最近记录: |