我有一个名为Foo的用户,电子邮件:foo@example.com Foo在FACEBOOK帐户中已将此电子邮件用作他的主要电子邮件。 Foo使用此电子邮件在GOOGLE上开设了一个帐户。
场景1
然后,Foo尝试使用Firebase身份验证在我的应用程序中注册,他选择Google作为第三方提供商。成功了。我可以在Firebase控制台的用户列表中看到foo@example.com。
然后Foo注销并尝试再次在我的应用程序中注册,但这一次选择Facebook作为第三方提供商。它失败了,他得到了以下错误:
ERROR_PROVIDER_ALREADY_LINKED`-当前用户已经链接了此类型的帐户。
到目前为止,一切都按我预期的那样正常工作。但是在这种情况下,事情让我感到困惑。
方案2:
我从Firebase控制台中删除了用户foo。
Foo尝试使用Facebook登录我的应用程序。成功了。我检查了Firebase控制台,然后看到用户foo@example.com及其旁边的Facebook徽标。
然后Foo注销,然后尝试再次通过Google注册我的应用。我原本期望的错误与上面的ERROR_PROVIDER_ALREADY_LINKED相同,但Foo却成功成功注册了!我迅速检查了Firebase控制台,发现使用foo@example.com作为第三方提供程序的Facebook用户已被Google覆盖。
这是所需的行为还是错误?如果正常,如何防止此代码覆盖现有用户?
firebaseUser = await _auth.signInWithCredential(credential);