Firebase 身份验证等问题

Problem with Firebase Authentication, etc

在快速搜索中,我发现我的 Firebase 身份验证问题是许多用户的常见问题,他们已经投诉了 2 年多! 可能大家投诉的不是很清楚,我会尽量详细说明问题的。

我希望同一用户拥有相同的 Firestore 数据,无论他使用何种身份验证方法。例如电子邮件和密码、Facebook、Google 或 GitHub。所有这些服务的唯一共同信息是电子邮件地址。

我无法使用 UserID,因为 firebase 会为每种身份验证方法创建一个。

在创建安全规则以使一个用户无法看到另一个用户的数据时,句子“request.auth.token.email”仅在使用“电子邮件和密码”方法时才会出现,这会产生大部分问题。

不适用于 google、facebook 等的规则示例:

rules_version = '2';
service cloud.firestore {
  match /databases/{database}/documents {
    match /user/{email}/{documents=**} {
      allow read, write, get: if request.auth != null && request.auth.token.email == email;
    }
  }
}

Firebase 团队的人可以帮助我们吗?

我刚刚在我自己的一个项目上对此进行了测试,user.email 属性 是否被填充(因此在您的安全规则中可用)取决于 One 帐户每个电子邮件地址 设置:

  • 防止使用相同的电子邮件地址创建多个帐户:这可以防止用户使用相同的电子邮件地址创建多个帐户, 填充 user.email 属性。如果您希望允许单个用户能够使用相同的电子邮件地址从多个提供商登录,在这种情况下您需要查看 linking accounts 上的文档。这也将允许您将安全规则基于 UID,因为链接的帐户都将具有相同的 UID。
  • 允许使用相同的电子邮件地址创建多个帐户user.email 属性 不会被填充,因此也不会被填充在安全规则中可用。

对这个老 question/answer 有一个 HT: