ios - google登录后使用电子邮件登录Firebase出现错误:密码无效或用户没有密码
问题描述
我正在为我的 iOS 应用程序使用 Firebase 身份验证服务。我想通过电子邮件或谷歌登录提供商登录应用程序。我应用了 firebase 指令。
我可以使用电子邮件和密码登录。然后我可以使用 Firebase 注销方法注销:
Auth.auth().signOut()
后来,我可以成功地用谷歌签名和注销。当我使用电子邮件和密码重新验证时,返回此消息:
密码无效或用户没有密码。
我无法使用电子邮件登录。
在 Firebase 控制台上,用户帐户符号从 mail 更改为 Google 。因此,我只能使用 Google 登录提供商进行签名,而不是电子邮件。
我无法解决这个问题。我怎么了?下面是我的代码部分。
此外,当我在 firebase 控制台上重置密码时,我可以使用其中两个登录。两个图像一起出现在控制台上: 我该如何解决这个问题?
谢谢!
在 AppDelegate.swift 中:
func sign(_ signIn: GIDSignIn!, didSignInFor user: GIDGoogleUser!, withError error: Error!) {
if let error = error {
log.debug("Error Google Sign-in: \(error)")
return
}
guard let authentication = user.authentication else { return }
let credential = GoogleAuthProvider.credential(withIDToken: authentication.idToken,
accessToken: authentication.accessToken)
Auth.auth().signInAndRetrieveData(with: credential) { (authResult, error) in
if let error = error {
log.error(error)
return
}
// User is signed in
}
}
这是注销按钮操作:
@IBAction func logout_TouchUpInside(_ sender: Any) {
do {
try Auth.auth().signOut()
GIDSignIn.sharedInstance().signOut()
} catch let error {
log.error(error.localizedDescription)
}
log.info("After logout current user: \(String(describing: Auth.auth().currentUser))")
}