首页 > 解决方案 > Firebase 用户重新身份验证初始化错误

问题描述

当任何用户想从应用程序更新他/她的密码时,我想更新同一个 FCM 用户的密码,为此我尝试了下面在官方文档中定义的代码。

这是那个截图 在此处输入图像描述

这是我的代码

func authenticateAndUpdateFCMUserPassword(strNewPassword: String) {
    let user = Auth.auth().currentUser
    var credential: AuthCredential

    // Prompt the user to re-provide their sign-in credentials
    user?.reauthenticate(with: credential) { error in
        if let error = error {
            // An error happened.
        } else {
            // User re-authenticated.
        }
    }

    Auth.auth().currentUser?.updatePassword(to: strNewPassword) { (error) in
        if error != nil {
            print("Error occur while updating password")
        }
        else {
            print("Password Updated Successfully")
        }
    }
}

user?.reauthenticate但是在上面的代码中,我遇到了以下错误

无法将类型“(_)->()”的值转换为预期的参数类型“AuthDataResultCallback?” (又名'可选<(可选,可选)->()>')

所以我用下面的代码重新写了

user?.reauthenticate(with: credential, completion: { (dataResult, errorr) in
    if errorr != nil {
        // An error happened.
    } else {
        // User re-authenticated.
    }
})

但在上面的代码中我面临以下错误

在初始化之前使用的变量“凭据”

凭证只定义一次,在此之前从未使用过

有人可以让我知道我做错了什么吗?

标签: iosswiftfirebasefirebase-authentication

解决方案


当我如下设置我的凭证变量时,错误消失了:

var credential: AuthCredential = EmailAuthProvider.credential(withEmail: email, password: password)

这个答案帮助了我:https ://stackoverflow.com/a/52160137/9625899


推荐阅读