有没有办法确定用户是通过自定义 Firebase 帐户还是通过 Flutter 中的 Google 帐户登录的?

Posted

技术标签:

【中文标题】有没有办法确定用户是通过自定义 Firebase 帐户还是通过 Flutter 中的 Google 帐户登录的?【英文标题】:Is there a way to determine if a user is signed in via custom firebase account or google account in flutter? 【发布时间】:2020-04-01 11:48:12 【问题描述】:

我正在构建一个颤振应用程序,我在登录页面上有创建帐户(保存在 firebase 中)或仅使用 Google 登录(也在 firebase 上创建帐户)的选项。在其他页面上,我有一个注销按钮,它只注销自定义 firebase 帐户,因为它正在调用此函数:

Future<void> signOut() async 
    return _firebaseAuth.signOut();
  

我也有这个谷歌退出功能:

Future<void> signOutGoogle() async
    return googleSignIn.signOut();
  

在顶部声明的变量:

 final FirebaseAuth _firebaseAuth = FirebaseAuth.instance;
  final GoogleSignIn googleSignIn = GoogleSignIn();
  FirebaseUser user;

有没有办法确定用户是通过 Google 还是自定义 Firebase 登录的?这样我就可以确定当用户单击注销时要调用哪个函数。

提前致谢

【问题讨论】:

我认为您应该重新考虑您的代码结构以考虑不同的身份验证类型。为什么不存储用户开始使用的身份验证方法? 这是一种方法。我只是想到了这一点,因为我跟踪身份验证文件中的枚举以确定用户是否登录,我也可以跟踪登录类型 【参考方案1】:

您可以访问名为providerDataFirebaseUser 属性,其类型为List&lt;UserInfo&gt;UserInfo 有一个 providerId,它是 fe。 google.comfacebook.compassword(电子邮件)或phone

您可以通过 code 找到这些值。

print(user.providerData[0].providerId) // -> fe. google.com

【讨论】:

啊啊啊好吧,我明白了。我会用这个方法。非常感谢。

以上是关于有没有办法确定用户是通过自定义 Firebase 帐户还是通过 Flutter 中的 Google 帐户登录的?的主要内容,如果未能解决你的问题,请参考以下文章

为Firebase身份验证帐户实施密码的自定义规则

有没有办法通过自定义事件传递额外的数据?

获取 iOS 的活跃用户数

在PowerQuery中让用户自定义筛选条件的一种解决办法

可以根据身份验证状态自定义Firebase托管行为(例如,重定向)吗?

具有 Cloud Functions for Firebase 的自定义观察者