使用自定义身份验证系统进行 Firebase 身份验证

您可以通过修改身份验证服务器,在用户成功登录时生成自定义的签名令牌,将 Firebase Authentication 与自定义身份验证系统集成。您的应用会接收此令牌并将其用于 Firebase 身份验证。

准备工作

  1. 按照使用入门指南中的步骤操作(如果您尚未这样做)。
  2. 安装和配置 Firebase Admin SDK。请务必使用 Firebase 项目的正确凭据初始化 SDK

进行 Firebase 身份验证

  1. 当用户登录您的应用时,将其登录凭据(例如,其用户名和密码)发送到您的身份验证服务器。您的服务器会检查凭据,如果凭据有效,则会创建自定义 Firebase 令牌并将令牌发回您的应用。

  2. 从身份验证服务器收到自定义令牌后,请将该令牌传递给 signInWithCustomToken() 以完成该用户的登录:

    try {
        final userCredential =
            await FirebaseAuth.instance.signInWithCustomToken(token);
        print("Sign-in successful.");
    } on FirebaseAuthException catch (e) {
        switch (e.code) {
            case "invalid-custom-token":
                print("The supplied token is not a Firebase custom auth token.");
                break;
            case "custom-token-mismatch":
                print("The supplied token is for a different Firebase project.");
                break;
            default:
                print("Unkown error.");
        }
    }
    

后续步骤

用户创建新帐号后,此帐号会存储为您的 Firebase 项目的一部分,无论用户使用哪种登录方法,您都可以使用此帐号在您项目中的每个应用中识别该用户。

在您的应用中,您可以从 User 对象获取用户的基本个人资料信息。请参阅管理用户

在您的 Firebase Realtime Database 和 Cloud Storage 安全规则中,您可以从 auth 变量获取已登录用户的唯一用户 ID,然后用其控制用户可以访问哪些数据。

您可以将身份验证服务提供方凭据关联至现有用户帐号,让用户可以使用多个身份验证服务提供方登录您的应用。

如需让用户退出登录,请调用 signOut()

await FirebaseAuth.instance.signOut();