仅当用户存在于 Firebase 中时 Flutter google 登录?
Posted
技术标签:
【中文标题】仅当用户存在于 Firebase 中时 Flutter google 登录?【英文标题】:Flutter google sign in only when user exist in firebase? 【发布时间】:2020-11-03 16:08:43 【问题描述】:我正在使用两个包进行 firebase 授权:
-
google_sign_in ^4.5.1
firebase_auth ^0.16.1
当我调用登录方法时
final FirebaseUser user =
(await _auth.signInWithCredential(credential)).user;
它在 firebase 授权表中创建一个用户。有没有办法检查具有此社交提供者数据的用户是否存在,如果他不存在则拒绝授权?我的意思是只有谷歌登录方法。
【问题讨论】:
@JideGuru 谢谢你的回答,你能详细解释一下吗? 【参考方案1】:您可以使用fetchSignInMethodsForEmail
method 来确定用于使用凭据中的电子邮件地址登录的登录方法。如果其中包含 google.com
登录方法,则用户之前使用此帐户登录过 Google 提供商。
但请注意,这不会阻止用户自己调用signInWithCredential
API。因此,尽管您可以使用这种方法为用户优化 UI 流程,但您无法阻止恶意用户仍然在您的 Firebase 项目中创建帐户。
这是客户端身份验证的本质所固有的:您不能阻止用户证明他们是谁。但是,您可以做的是限制他们可以访问的内容。如果您使用 Firebase 后端服务为您的应用存储数据,则可以通过使用 Firebase 的 server-side security rules 来控制用户可以访问哪些数据来实现。
【讨论】:
以上是关于仅当用户存在于 Firebase 中时 Flutter google 登录?的主要内容,如果未能解决你的问题,请参考以下文章
仅当 Firebase Firestore 中不存在文档时才创建文档
Zapier Slack 私人频道:仅当用户在频道中时才发送消息
仅当表存在时如何删除 Amazon Redshift 中的表
当我尝试验证用户是不是存在于 Azure Active Directory 中时,如何解决 Invalid Audience?