Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/fortran/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Firebase:获取上次用户令牌刷新的时间戳?_Firebase_Firebase Authentication - Fatal编程技术网

Firebase:获取上次用户令牌刷新的时间戳?

Firebase:获取上次用户令牌刷新的时间戳?,firebase,firebase-authentication,Firebase,Firebase Authentication,我想获取用户的令牌上次刷新的时间戳,这样,如果它有一段时间没有更新,我可以强制刷新以确保我有最新的用户数据(例如,自定义声明,如果令牌被撤销),并将其用作近似的当前时间,而不是依赖于用户的时钟 有办法得到这个时间戳吗 我知道刷新令牌有一个“到期日”,刷新令牌每小时更新一次,但我很小心“每小时”值可能会更改 您是从客户端还是从服务器运行此检查?如果您是从客户端运行它,您可以查看ID令牌中的iat字段。这是客户端上最后一次刷新的时间。@bojeil。谢谢,我想到了执行firebase.auth().

我想获取用户的令牌上次刷新的时间戳,这样,如果它有一段时间没有更新,我可以强制刷新以确保我有最新的用户数据(例如,自定义声明,如果令牌被撤销),并将其用作近似的当前时间,而不是依赖于用户的时钟

有办法得到这个时间戳吗


我知道刷新令牌有一个“到期日”,刷新令牌每小时更新一次,但我很小心“每小时”值可能会更改

您是从客户端还是从服务器运行此检查?如果您是从客户端运行它,您可以查看ID令牌中的
iat
字段。这是客户端上最后一次刷新的时间。@bojeil。谢谢,我想到了执行firebase.auth().currentUser.getIdTokenResult(true)(强制刷新),然后获取令牌的“issuedAtTime”。这似乎使服务器时间在几秒钟之内,即使我更改了客户端时钟。此解决方案是否不太可能中断,并且没有利用实现细节?我看过一些关于在使用Firebase时获得准确的客户端时间戳的帖子,所以我很惊讶以前没有发布过这个解决方案。你能详细解释一下你的流程吗?您将在时间戳处获得发出的消息,并将其发送到服务器。然后会发生什么呢?我的应用程序有付费订阅,订阅记录存储在Firestore中。我想要一个基本的检查,确认订阅尚未过期。要检查有效订阅,客户端会要求Firestore为当前用户(您可以有多个订阅)提供到期日期大于当前时间的订阅。我不想依赖客户的时钟。“issuedAtTime”似乎非常适合于此,即我将刷新令牌,获取时间,然后查询Firestore。我知道这类东西很容易被黑客攻击,但大多数IAP支付方案也是如此。为什么不将订阅的过期时间保存在Firestore数据库中(假设您在服务器环境中这样做,并且具有写保护)?然后检查用户是否经过身份验证,当前时间是否小于Firestore规则中的过期时间?这是安全的方法。