java - 一次登录应用程序 - FirebaseAuth

标签 java android firebase firebase-authentication

我正在开发一个应用程序,该应用程序使用 Firebase 身份验证通过电话号码登录用户。我想添加一项功能,使用户只能登录一次,即即使用户终止应用程序并再次启动它,他也应该登录。另外,我不想添加注销功能.可以为此做些什么?

最佳答案

实现此目的的最简单方法是使用监听器。假设您有两个 Activity ,LoginActivityMainActivity。可以在 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。在此 Activity 中,您应该执行与 LoginActivity 中相同的操作,您应该开始监听 onStart() 中的更改。

在这两个 Activity 中,不要忘记在不再需要的那一刻删除监听器。因此,在您的 onStop() 方法中添加以下代码行:

@Override
protected void onStop() {
    super.onStop();
    firebaseAuth.removeAuthStateListener(authStateListener);
}

关于java - 一次登录应用程序 - FirebaseAuth,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50885891/

相关文章:

firebase - AngularFire2 - 按下时设置自定义键

java - 包 javax.servlet.http 不存在,但 servlet-api.jar 存在

java - java中堆内存和字符串常量池有什么区别

java - 如何在等待长 POST 请求时显示进度/请等待类型组件

android - 在android中单击时隐藏默认键盘

android - 将更新推送到 Google Play 以替换现有应用

java - 并发迭代 BlockingQueue

javascript - sqlite同步

ios - ionic iOS FCM 在开发模式下工作,但在生产模式下不工作

javascript - 如何使用 Modular Web SDK 版本 9 在 Cloud Firestore 集合中的文档中获取文档和嵌套集合?