【问题标题】:How to check expiry of token via expiry_time coming with that in javascript如何通过 javascript 中附带的 expiry_time 检查令牌的到期时间
【发布时间】:2016-08-06 05:55:23
【问题描述】:

我从 Flipkart API 获得了一个访问令牌,并给了我一个带有到期时间的令牌。但我不知道他们在到期时间给出了什么,他们以秒为单位给出了某种时间戳,因为我将这些秒转换为分钟,然后有 56 天就像即将到来的那样。当我阅读文档时,他们说令牌在 60 天后过期。但是当我点击 API 时,它每次都会在 expiry_time 字段中给我不同的时间戳。 例如第一次它会给出:-

"access_token" : "0c87d3c8-824d-446b-bqf8-c14e7d49f06",
"expires_in" : 4773358

一段时间后我再次点击它然后它返回:-

"access_token" : "0c87d3c8-824d-446b-bqf8-c14e7d49f06",
"expires_in" : 4840646

我只想通过它的到期时间来验证这个令牌,即如果令牌过期,我需要再次点击并获取新的令牌。我如何检查令牌是否过期。

如何使用 java 脚本或 Meteor 框架来实现这一点。或者我也想知道他们以哪种格式给我这个时间戳(以我认为的秒数或其他格式)。正如他们所说,令牌在 60 天内过期,但当我转换它时,它只显示 56 天而不是 60 天,所以请解释如果有人知道,这对我来说也是如此。

任何帮助将不胜感激

谢谢!

【问题讨论】:

    标签: javascript meteor flipkart-api


    【解决方案1】:

    我怀疑他们给你的令牌在一周中的某一天午夜到期,而不是从现在起 60*24*3600 = 5,184,000 秒。要将此到期延迟转换为特定日期时间,请执行以下操作:

    var now = new Date();
    expiryDate = new Date(now.getTime() + expires_in*1000);
    

    您必须乘以 1000,因为 getTime() 返回毫秒数。

    【讨论】:

      【解决方案2】:

      我也有同样的问题,更多的是在另一个服务中。 看看我做了什么,当我生成一个令牌时,我在时间戳中设置了它的过期时间并将它保存在一个 cookie 和秒中,让我们想象你的令牌在一天内过期,所以你必须保存时间戳在创建令牌的同时生成,并且令牌的持续时间在我们的例子中是以秒为单位的一天 '1 以秒为单位的天 = 86400' 我不检查令牌以了解过期时间,因为我需要使用节点,而是使用设置令牌过期时间的秒数加上有效负载链接的时间戳。 我计算保存在 cookie 中的时间戳和秒数,生成新的本地时间戳,然后减去。

      See the demo working on allaksr

      【讨论】:

        【解决方案3】:

        我是这样解决的:

        export const expiryToISODate = (expiresIn: number): string => {
          const now = new Date();
          now.setSeconds(now.getSeconds() + expiresIn);
          return now.toISOString();
        };
        

        【讨论】:

          猜你喜欢
          • 2023-04-04
          • 1970-01-01
          • 1970-01-01
          • 2018-02-18
          • 2021-03-20
          • 2019-03-03
          • 1970-01-01
          • 2018-06-19
          • 2019-03-27
          相关资源
          最近更新 更多