我有一个firebase项目,里面有两个应用程序。客户端应用和服务提供商应用。两者都使用firebase手机身份验证。 每个用户都可以注册为同一电话号码的客户或服务提供商。 在服务器端,我可以从已发送的令牌(每个应用程序不同)获取用户ID(两个应用程序相同)。我不知道如何检索的东西是令牌属于哪个应用程序的用户? 例如,当应用程序向服务器发送请求以获取登录用户的配置文件信息时,它会将令牌发送到服务器。现在,我如何确定是否应该返回客户端应用程序或服务提供商应用程序的用户配置文件信息。这是两种截然不同的轮廓模型。
答案 0 :(得分:2)
您可以使用自定义用户声明将用户与客户端应用或服务提供商应用区分开来:https://firebase.google.com/docs/auth/admin/custom-claims
您可以使用Firebase管理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
您需要在客户端强制刷新令牌。