有没有办法确定用户是通过自定义 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】:您可以访问名为providerData
的FirebaseUser
属性,其类型为List<UserInfo>
。 UserInfo
有一个 providerId
,它是 fe。 google.com
、facebook.com
、password
(电子邮件)或phone
。
您可以通过 code 找到这些值。
print(user.providerData[0].providerId) // -> fe. google.com
【讨论】:
啊啊啊好吧,我明白了。我会用这个方法。非常感谢。以上是关于有没有办法确定用户是通过自定义 Firebase 帐户还是通过 Flutter 中的 Google 帐户登录的?的主要内容,如果未能解决你的问题,请参考以下文章