java - 一次性登录应用 - FirebaseAuth
问题描述
我正在开发一个使用 Firebase 身份验证通过电话号码登录用户的应用程序。我想添加一项功能,使用户只有一次登录,即即使用户杀死应用程序并再次启动它,他也应该登录。另外,我不想添加注销功能. 为此可以做些什么?
解决方案
实现这一点的最简单方法是使用监听器。假设您有两个活动,theLoginActivity
和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();
}
}
};
这基本上意味着如果用户已登录,则跳过LoginActivity
并转到MainActivity
.
实例化FirebaseAuth
对象:
FirebaseAuth firebaseAuth = FirebaseAuth.getInstance();
并开始监听您的方法中的更改,onStart()
如下所示:
@Override
protected void onStart() {
super.onStart();
firebaseAuth.addAuthStateListener(authStateListener);
}
在 中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);
}
}
};
这基本上意味着如果用户未登录,请跳过MainActivity
并转到LoginActivity
. 在这个活动中你应该做和 中一样的事情LoginActivity
,你应该开始监听 中的变化onStart()
。
在这两个活动中,不要忘记在不再需要的那一刻移除监听器。onStop()
因此,在您的方法中添加以下代码行:
@Override
protected void onStop() {
super.onStop();
firebaseAuth.removeAuthStateListener(authStateListener);
}
推荐阅读
- pdf - 将 PDF 转换为 EPS 时 Ghostscript 挂起
- github - github.io 上的通配符 subdomin
- linux - 如何在 Yocto 中 bitbake 动态层食谱?
- javascript - Discord bot 不执行命令 (discord.js v11.5.1)
- regex - Perl 正则表达式语法?
- position - 移动版主题prestashop 1.7中的显示模块
- azure - Ansible 动态库存获取 IP 地址
- azure - 添加条件以跳过 ADF 数据流中的转换
- java - 禁用日志归档 Spring boot 日志配置
- javascript - 我如何在淘汰赛中使用aa vue组件