Ios Firebase身份验证自定义声明过期
我在我的应用程序中使用自定义声明来允许访问它的某些功能。我在用户登录后设置声明。在此之后,我不会更改自定义声明 一切似乎都很好,但上次我收到很多用户的请求,他们无法访问这些功能。从云函数中,我可以看到它们的声明(一个特定声明,我不记录所有声明)或所有令牌都是“未定义”的。在云计算中,我是这样做的Ios Firebase身份验证自定义声明过期,ios,firebase,firebase-authentication,firebase-admin,Ios,Firebase,Firebase Authentication,Firebase Admin,我在我的应用程序中使用自定义声明来允许访问它的某些功能。我在用户登录后设置声明。在此之后,我不会更改自定义声明 一切似乎都很好,但上次我收到很多用户的请求,他们无法访问这些功能。从云函数中,我可以看到它们的声明(一个特定声明,我不记录所有声明)或所有令牌都是“未定义”的。在云计算中,我是这样做的 console.log("claims: " + context.auth.token.claimid); 结果是“索赔:未定义” 这些用户对该应用并不陌生,他们会使用它几个月。我
console.log("claims: " + context.auth.token.claimid);
结果是“索赔:未定义”
这些用户对该应用并不陌生,他们会使用它几个月。我确信他们之前就有代币和声明,否则这个应用程序对他们就不起作用了
问题是:自定义声明是否过期?还是代币?我使用anonymous auth,该应用程序是针对iOS的(Android用户似乎没有这个问题)
更新
似乎出现了问题,因为我们更改了应用程序包id并导入了新的Google Services plist文件。在此之后,老用户将获得新的匿名身份验证配置文件,而不使用自定义声明,而不是获得他们的旧身份验证配置文件。自定义声明不会过期。它们保留在用户的令牌中,直到您设置新的自定义声明
因此,最合乎逻辑的解释是,不知何故,另一个设置自定义声明的调用是在没有任何声明的情况下为同一用户发出的。根据您共享的内容,我们无法知道该调用来自何处,但我建议搜索使用Admin SDK的其他代码/开发人员。所以您认为“未定义”适用于自定义声明,而不是令牌?我不应该担心匿名令牌的过期,对吗?我之所以问你,是因为自定义声明仅从AdminSDK(云函数)中设置。我检查了一下,除了登录和注册之外,我没有在任何其他场景中设置它们。有问题的用户在成功注册后没有使用这些场景。这就是我担心整个令牌的原因。您问题中未定义的
表示ID令牌没有claimid
。从问题中的信息我们只能知道这些。匿名身份验证令牌很可能已被删除/损坏,因此我始终建议允许您的用户升级到非匿名帐户:谢谢。你能分享一些关于匿名身份验证令牌如何受损的想法吗?这可能是你的应用程序安装受损之类的事情。老实说,这是不可能远程排除故障的-因此我建议您集中精力在发现有此问题的用户之间的共同模式。这里有更多新闻@Basylio吗?