我有一个应用程序,你可以通过Apple sign in或Google sign in登录。假设我有一台安卓系统,我可以通过Google登录。然后我换成iPhone,想使用苹果登录。
目前,如果我使用苹果登录,与使用谷歌登录时相比,我将从FirebaseUser
获得不同的uid。
有没有一种方法可以检测到Firebase上已经有用户并获取该uid?
我正在使用Flutter,并且读过关于链接的文章,但这并不是我想要的。
您可以将多个身份验证提供者链接到一个帐户,但这仍然需要用户首先使用其现有用户凭据登录。Google帐户(例如@gmail.com
(和Apple ID(例如@icloud.com
(的域可能不同,因此Firebase不太可能像对待电子邮件密码和Google帐户那样将它们视为单个帐户。
允许用户登录多个提供商的典型流程是:
- 询问他们的电子邮件地址,这是他们在Firebase中的主要标识符
- 致电
fetchSignInMethodsForEmail
,查看与该电子邮件地址相关联的提供商 - 如果有的话:显示一个屏幕,用户可以从关联的提供商中进行选择以完成登录
- 如果没有:显示一个屏幕,允许用户选择您想要允许的任何提供商
正如Dharmaraj所说,在第4步中,您可以允许将新提供商与现有帐户链接,但您可能需要向用户询问更多信息,而不仅仅是他们的电子邮件地址,才能进行映射。