使用Firebase身份验证服务时,如何在没有现有帐户的情况下通过Facebook/Google登录时抛出错误
我正在使用使用Firebase身份验证服务时,如何在没有现有帐户的情况下通过Facebook/Google登录时抛出错误,firebase,firebase-authentication,flutter,Firebase,Firebase Authentication,Flutter,我正在使用Firebase身份验证服务开发一个flatter应用程序 使用了以下flatter插件: 登录流程为: 使用Facebook、Google或电子邮件和密码登录 如果已创建帐户,请登录 如果不是,则抛出错误 如果日志记录方法是电子邮件和密码,则这是可能的。在Firebase\u auth插件中,电子邮件和密码场景有两种不同的方法:createUserWithEmailAndPassword和withemailandpassword登录。当使用不存在的帐户调用登录方法时,它将抛出错
Firebase身份验证服务
开发一个flatter
应用程序
使用了以下flatter
插件:
登录流程为:
Firebase\u auth
插件中,电子邮件和密码场景有两种不同的方法:createUserWithEmailAndPassword
和withemailandpassword登录。当使用不存在的帐户调用登录方法时,它将抛出错误的id/密码
然而,对于Facebook/Google登录方法,该插件只提供
signiWithFacebook
和signiWithGoogle
他们的工作方式是,用户第一次使用facebook/google帐户登录,Firebase
将自动创建一个帐户并返回新创建的帐户。(没有单独的注册
和登录
过程)
我也在报纸上读到
用户首次登录后,将创建一个新的用户帐户并链接到凭据,即用户登录时使用的用户名和密码、电话号码或身份验证提供商信息。此新帐户存储为Firebase项目的一部分,可用于在项目中的每个应用程序中识别用户,无论用户如何登录
因此,我的问题是:如果用户使用Fb/G帐户登录,但该帐户尚未用于在Firebase
上注册我的应用程序,我如何使Firebase身份验证
抛出错误,而不是自动创建新帐户?Firebase团队的Malcolm!好问题
考虑到中当前存在的功能,您可以使用#fetchProvidersForEmail()方法获得所需的结果。以下是您将为联合IDP遵循的逻辑步骤:
使用IDP正常登录并获取令牌
解析为用户电子邮件返回的令牌(通常使用JWT解析库)李>
使用提取的电子邮件调用#fetchProvidersForEmail()
如果返回电子邮件的提供商是空的,则它是一个新帐户。否则,它是一个现有帐户
或者,您可以更新颤振插件以返回更多的,其中包括用户是否是新用户。如果用户是新用户,那么您只需调用并抛出您想要的任何错误。(您还必须将其添加到插件中)。谢谢!我认为Dart插件
已经实现了SDK的所有方法。我认为你的回答很清楚,我可以自己实施具体的解决方案。