将凭据(例如电子邮件和密码或 Facebook)链接到匿名用户,然后取消链接后,生成的用户(由 userChanges
流生成)具有 email: null
(就像我会期望),但是 isAnonymous: false
,这是我没想到的 - 用户已经失去了他们的匿名性。如果您随后只想允许凭据针对匿名用户进行(重新)链接,这将是有问题的。
userChanges
也与 Firebase 控制台相矛盾,其中用户标识符仍然是链接凭据中的电子邮件地址,而不是恢复为 (anonymous)
- 尽管 email: null
来自流。
上述行为是否符合预期?
答案 0 :(得分:1)
这是预期的行为:一旦 isAnonymous
标志变为 false
,在取消附加提供程序的链接后它不会再次变为 true
。
如果您想检测这种情况,您可以检查用户的 providerData
数组中是否有任何提供程序。
例如,这是我的一个应用程序检查用户是否使用 Google 帐户登录的方式:
bool isSignedInUser() {
return this.user != null && (
this.user.providerData.any((UserInfo info) => info.providerId == "google.com")
);
}
你需要一些不同的东西,但我希望这段代码能给你一个好的起点。