将凭据(如电子邮件和密码,或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")
);
}
您需要一些不同的东西,但我希望这段代码能给您一个好的起点。