首页 > 解决方案 > Firebase 对特定活动的第二次用户身份验证

问题描述

在我的应用程序中,用户使用 firebase 进行注册和身份验证。只有经过身份验证的用户才能访问应用程序中的所有活动。但是在应用程序内部,有一个活动(ActivityB)是基于用户的数据。此活动再次受到电子邮件和密码登录的限制(以便未安装该应用程序的人可以从其他用户那里检查此活动)。

假设 user1 在应用程序上注册并通过 firebase 进行身份验证。他将在整个应用程序中进行身份验证。当user2访问ActivityB时,他可以访问自己的数据。但是当他注销时,我需要像以前一样自动对 user1 进行身份验证。

我怎样才能做到这一点?

即使 User1/user2 从 ActivityB 注销,用户也会从整个 Firebase 身份验证中注销。

我给的只是注销命令。但它不起作用

public void signout (View v)
    {
        auth.signOut();
        Intent i = new Intent(this,ActivityB.class);
        startActivity(i);
    }

标签: androidfirebasefirebase-authentication

解决方案


听起来您希望两个用户在您的应用程序中登录到 Firebase 身份验证。这不是一种常见的情况,因此您必须做一些跑腿工作才能使其正常工作。

FirebaseAuth要意识到的最重要的事情是每个实例只能有一个用户登录。因此,要允许两个用户登录,您需要创建两个FirebaseAuth实例。

您通常会FirebaseAuth使用FirebaseAuth.getInstance(). 要获取辅助FirebaseAuth实例,请按照在单个应用程序中设置多个项目的说明进行操作。您可以使用与默认FirebaseApp实例相同的设置,但您必须在此处的代码中指定它们。

所以它看起来像:

FirebaseOptions options = new FirebaseOptions.Builder()
        .setProjectId("my-firebase-project")
        .setApplicationId("1:27992087142:android:ce3b6448250083d1")
        .setApiKey("AIzaSyADUe90ULnQDuGShD9W23RDP0xmeDc6Mvw")
        // setDatabaseURL(...)
        // setStorageBucket(...)
        .build();
FirebaseApp secondary = FirebaseApp.initializeApp(this /* Context */, options, "secondary");

然后使用以下命令登录该FirebaseApp实例:

FirebaseAuth.getInstance(secondary).signIn...

另见:


推荐阅读