仅当用户存在于 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?

如何检查用户是不是存在于 Firebase 中?