在一个项目中使用多个应用程序进行 Firebase 身份验证

Firebase auth with multiple apps in a project

我有一个 firebase 项目,里面有两个应用程序。客户端应用程序和服务提供商应用程序。两者都使用 firebase phone 身份验证。 每个用户都可以注册为相同 phone 号码的客户或服务提供商。 在服务器端,我可以从已发送的令牌(每个应用程序不同)中获取用户 ID(两个应用程序都相同)。我不知道如何检索的是令牌属于哪个应用程序中的用户? 例如,当应用程序向服务器发送请求以获取已登录用户的个人资料信息时,它会将令牌发送到服务器。现在我如何确定是否应该 return 客户端应用程序或服务提供商应用程序的用户个人资料信息。这是两个截然不同的配置文件模型。

您可以使用自定义用户声明来区分用户与客户端应用或服务提供商应用:https://firebase.google.com/docs/auth/admin/custom-claims

您将使用 Firebase Admin SDK 设置自定义声明:

admin.auth().setCustomUserClaims(uid, {role: 'client'|'provider'})

您将在您的规则中强制执行访问。例如:

{
  "rules": {
    "providerContent": {
      ".read": "auth.token.role === 'provider'",
      ".write": "auth.token.role === 'provider'",
    },
    "clientContent": {
      ".read": "auth.token.role === 'client'",
      ".write": "auth.token.role === 'client'",
    }
  }
}

您可以按以下方式宣传您的声明: https://firebase.google.com/docs/auth/admin/custom-claims#propagate_custom_claims_to_the_client

您需要在客户端强制刷新令牌。