首页 > 解决方案 > Firebase Google 登录获取凭据

问题描述

在此示例中,我们可以通过首先提供因提供商而异的凭据来重新验证用户。但是对于谷歌来说,有这个例子说:

guard let authentication = user.authentication else { return }
let credential = GoogleAuthProvider.credential(withIDToken: authentication.idToken,
                                                  accessToken: authentication.accessToken)

我怎么得到user.authentication?中没有authentication财产Auth.auth().currentUser

credential = EmailAuthProvider.credential(withEmail: email, password: password)
credential = FacebookAuthProvider.credential(withAccessToken: AccessToken.current!.tokenString)

user.reauthenticate(with: credential) { (result, error) in
    //
}

标签: iosswiftfirebasefirebase-authenticationgoogle-signin

解决方案


重新身份验证背后的想法是,对于某些敏感操作,例如删除帐户、更新主电子邮件地址或更改密码,您需要确保用户最近登录过。

所以你想做的是

  1. 要求他们登录
  2. 获得证书
  3. user.reauthenticate使用新证书执行

Swift 文档为此提供了一个简洁的示例:

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.
  }
}

有关更详细的代码示例,请查看 FirebaseUI ( FUIAccountSettingsOperation.m ),它执行我上面概述的操作。


推荐阅读