ios - 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
//
}
解决方案
重新身份验证背后的想法是,对于某些敏感操作,例如删除帐户、更新主电子邮件地址或更改密码,您需要确保用户最近登录过。
所以你想做的是
- 要求他们登录
- 获得证书
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 ),它执行我上面概述的操作。
推荐阅读
- php - 在 Laravel 中显示特定类别的产品
- java - “flutter build apk”没有构建所有必要的 pub 包,即使这些包在我的颤振应用程序中使用
- android - Flutter 应用程序在发布时卡在启动画面上
- java-8 - 如何在 google Cache CacheLoader 中传递多个参数?
- python - 生成一个随机数,如果不符合条件则重新生成。怎么做?
- .net-core - 谷歌云函数中的 .Net Core API
- node.js - 无法使用 NPM 安装 Node Sass
- nginx - 当我访问没有 www 的 URL 时,nginx 返回 404
- java - 如何在 java 中打印 MODLUS“%”
- meshlab - 你能在 Meshlab 中命名面/区域吗?