在使用Flutter进行社交登录身份验证时,如何获取用户详细信息?

时间:2020-09-27 16:34:34

标签: flutter dart firebase-authentication

我正在创建Flutter应用程序,并且坚持使用电子邮件/密码以及Google和Facebook等社交服务提供商来实施身份验证。除了我关于如何获取用户详细信息(如地址,电话号码,用户名等)存储在Firebase中的方法外,其他所有方法都有效。在处理电子邮件/密码注册时,实现此操作非常简单,因为我创建了多屏幕表单,然后最终注册了用户与社交服务提供商合作时获取更多详细信息的问题在于,在获得获取更多详细信息的机会之前,我需要先对用户进行身份验证。我该如何为选择使用Google和Facebook进行身份验证的用户获取用户详细信息?

1 个答案:

答案 0 :(得分:0)

一种方法是在用户登录时提示用户输入所需的其他详细信息。

您应该首先检查用户是否通过社交媒体提供商登录:

List<String> providerList = await FirebaseAuth.instance.fetchSignInMethodsForEmail(_email);

fetchSignInMethodsForEmail 将返回用户用来登录到您的应用程序的标志提供程序的列表(如果您尚未启用帐户链接,则可能只是一个提供程序)

以下是社交媒体提供商ID的列表:

GoogleAuthProviderID: google.com
FacebookAuthProviderID: facebook.com
TwitterAuthProviderID: twitter.com
GitHubAuthProviderID: github.com
AppleAuthProviderID: apple.com
YahooAuthProviderID: yahoo.com
MicrosoftAuthProviderID: hotmail.com

例如,如果您启用了Facebook登录,则可以检查 providerList 中是否有“ facebook.com”,如果提示,则提示您收集其他数据并更新用户的屏幕在Firestore上为此用户记录。