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

时间:2020-12-23 21:52:27

标签: firebase flutter firebase-authentication

将凭据(例如电子邮件和密码或 Facebook)链接到匿名用户,然后取消链接后,生成的用户(由 userChanges 流生成)具有 email: null(就像我会期望),但是 isAnonymous: false,这是我没想到的 - 用户已经失去了他们的匿名性。如果您随后只想允许凭据针对匿名用户进行(重新)链接,这将是有问题的。

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

上述行为是否符合预期?

1 个答案:

答案 0 :(得分:1)

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

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

例如,这是我的一个应用程序检查用户是否使用 Google 帐户登录的方式:

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

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