gpt4 book ai didi

firebase - 使用 Firebase 身份验证服务时,如何在没有现有帐户的情况下通过 Facebook/Google 登录时抛出错误

转载 作者:IT王子 更新时间:2023-10-29 07:01:00 25 4
gpt4 key购买 nike

我正在使用 Firebase 身份验证服务 开发一个 Flutter 应用。

使用了以下 Flutter 插件:

  1. Firebase_auth

  2. Google_sign_in

  3. Facebook_login

登录流程是:

  1. 使用 Facebook、Google 或电子邮件和密码登录
  2. 如果帐户已经创建,请登录
  3. 如果不是,抛出错误

如果日志记录方法是电子邮件和密码,这是可能的。在Firebase_auth 插件中,Email&Password 场景有两个独立的方法:createUserWithEmailAndPasswordsignInWithEmailAndPassword。当使用不存在的帐户调用登录方法时,它将抛出 wrong id/password 错误。

但是对于Facebook/Google登录方式,插件只提供signInWithFacebooksignInWithGoogle 它们的工作方式是用户第一次使用 facebook/google 帐户登录时,Firebase 会自动创建一个帐户并返回新创建的帐户。 (没有单独的注册登录过程)

我还阅读了 Firebase doc for Android Google Sign in

After a user signs in for the first time, a new user account is created and linked to the credentials—that is, the user name and password, phone number, or auth provider information—the user signed in with. This new account is stored as part of your Firebase project, and can be used to identify a user across every app in your project, regardless of how the user signs in.

所以,我的问题是:如果用户使用尚未在 Firebase 上注册我的应用程序的 Fb/G 帐户登录,我该如何进行 Firebase 身份验证 抛出错误而不是自动创建一个新帐户?

最佳答案

这里是来自 Firebase 团队的 Malcolm!很好的问题。

鉴于 open source Flutter plugins 中当前存在的功能,您可能会通过使用方法 #fetchProvidersForEmail() 获得您想要的结果。以下是您将为联合 IDP 遵循的逻辑步骤:

  1. 使用 IDP 正常登录并获得 token 。
  2. 解析为用户电子邮件返回的 token (通常使用 JWT 解析库)。
  3. 使用提取的电子邮件调用#fetchProvidersForEmail()。
  4. 如果返回电子邮件的提供商是空的,那么这是一个新帐户。否则,它是一个现有帐户。

或者,您可以更新 Flutter 插件以返回更多 AuthResult ,其中包括用户是否是新用户。如果用户 新用户,那么您只需调用 FirebaseAuth#getCurrentUser()#delete()并抛出你想要的任何错误。 (您还必须将其添加到插件中)。

关于firebase - 使用 Firebase 身份验证服务时,如何在没有现有帐户的情况下通过 Facebook/Google 登录时抛出错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50340050/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com