Ein*_*ig7 4 java android firebase firebase-authentication
我正在开发一款使用Firebase身份验证通过电话号码登录用户的应用.我想添加一个功能,只有一次登录用户,即使用户杀死应用程序并再次启动它,他应该登录.另外,我不想添加注销功能.可以做些什么呢?
实现此目的的最简单方法是使用侦听器.我们假设你有两个活动,即LoginActivity和MainActivity.可以在其中创建的侦听器LoginActivity应如下所示:
FirebaseAuth.AuthStateListener authStateListener = new FirebaseAuth.AuthStateListener() {
@Override
public void onAuthStateChanged(@NonNull FirebaseAuth firebaseAuth) {
FirebaseUser firebaseUser = firebaseAuth.getCurrentUser();
if (firebaseUser != null) {
Intent intent = new Intent(LoginActivity.this, MainActivity.class);
startActivity(intent);
finish();
}
}
};
Run Code Online (Sandbox Code Playgroud)
这基本上意味着如果用户登录,请跳过LoginActivity并转到MainActivity.
实例化FirebaseAuth对象:
FirebaseAuth firebaseAuth = FirebaseAuth.getInstance();
Run Code Online (Sandbox Code Playgroud)
并开始侦听onStart()方法中的更改,如下所示:
@Override
protected void onStart() {
super.onStart();
firebaseAuth.addAuthStateListener(authStateListener);
}
Run Code Online (Sandbox Code Playgroud)
在MainActivity,你应该做同样的事情:
FirebaseAuth.AuthStateListener authStateListener = new FirebaseAuth.AuthStateListener() {
@Override
public void onAuthStateChanged(@NonNull FirebaseAuth firebaseAuth) {
FirebaseUser firebaseUser = firebaseAuth.getCurrentUser();
if (firebaseUser == null) {
Intent intent = new Intent(MainActivity.this, LoginActivity.class);
startActivity(intent);
}
}
};
Run Code Online (Sandbox Code Playgroud)
这基本上意味着如果用户没有登录,请跳过MainActivity并转到LoginActivity.在这个活动中你应该做同样的事情LoginActivity,你应该开始听取变化onStart().
在这两个活动中,不要忘记在不再需要的时刻删除监听器.因此,在onStop()方法中添加以下代码行:
@Override
protected void onStop() {
super.onStop();
firebaseAuth.removeAuthStateListener(authStateListener);
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1197 次 |
| 最近记录: |