Flutter Firebase身份验证-取消连接身份验证提供程序不会产生原始(匿名)用户



将凭据(如电子邮件和密码,或Facebook(链接到匿名用户,然后取消链接后,生成的用户(由userChanges流生成(具有email: null(正如我所期望的(,但具有isAnonymous: false,这是我所不期望的-用户已失去匿名性。如果您随后只想允许凭据(重新(链接到匿名用户,这将是有问题的。

userChanges也与Firebase控制台相矛盾,在Firebase控制台中,用户标识符仍然是链接凭据中的电子邮件地址,而不是恢复回(anonymous)——尽管流中有email: null

上述行为是否为预期行为?

这是预期的行为:一旦isAnonymous标志变为false,在取消与其他提供程序的链接后,它将不会再次变为true

如果您想检测这种情况,可以检查用户的providerData数组中是否有任何提供程序。

例如,我的一个应用程序就是这样检查用户是否使用谷歌帐户登录的:

bool isSignedInUser() {
return this.user != null && (
this.user.providerData.any((UserInfo info) => info.providerId == "google.com")
);
}

您需要一些不同的东西,但我希望这段代码能给您一个好的起点。

最新更新