如何在 firebase Jetpack compose 中以不同方式处理用户不存在和密码错误的情况[重复]

问题描述 投票:0回答:1
override suspend fun signIn(email: String, password: String): Flow<Response<Boolean>> =
    callbackFlow {
        try {
            auth.signInWithEmailAndPassword(email, password)
                .addOnCompleteListener { task ->
                    if (task.isSuccessful) {
                        trySend(Response.Success(true))
                        val user = auth.currentUser
                    } else {
                        try {
                            throw task.exception!!
                        } catch (e: FirebaseAuthInvalidCredentialsException) {
                            trySend(Response.Failure(e))
                        }
                    }
                }
            trySend(Response.Loading)
        } catch (e: Exception) {
            trySend(Response.Failure(e))
        }

        awaitClose { }
    }

我想处理用户不存在和密码错误的情况,firebase 在这两种情况下都会抛出相同的异常,那么如何区分这两种情况并让用户知道为什么登录失败?

操作 RecaptchaAction(action=signInWithPassword) 的初始任务失败,但有异常 - 提供的身份验证凭据不正确、格式错误或已过期

android firebase kotlin android-jetpack-compose
1个回答
0
投票

对于 2023 年 9 月 15 日以来创建的项目,Firebase 已自动启用针对电子邮件枚举攻击的保护。这种保护的后果之一是用户不存在和密码错误之间不再可能。

您必须禁用针对电子邮件枚举攻击的保护或放弃该用例。

© www.soinside.com 2019 - 2024. All rights reserved.