Google 的 idToken exp 始终设置为 1970

Google's idToken exp always set to 1970

从 Google 收到 idToken 并验证后,我注意到它的 exp: 1623186214 总是设置为 1970,它总是会自行过期。例如 var when=new Date(1623186214); 结果 Mon Jan 19 1970 10:53:06 GMT-0800 (Pacific Standard Time)。 如何解决?提前谢谢你。

好的,exp 是自格林威治标准时间 1970 年 1 月 1 日午夜以来的秒数。

所以检查过期的正确方法是

var d=new Date('1970-01-01T00:00:00Z'); // 1970-01-01 GMT
d.setUTCSeconds(1623259934); // the value of 'exp', note use UTC not setSeconds().

现在是 2021 年 6 月 9 日,星期三 10:32:14 GMT-0700(太平洋夏令时),登录一小时后。

但是,一些更好的验证方法:

  1. 使用Google的public端点
  2. 使用Google的客户端库google-auth-library

详情Authenticate with a backend server

JWT 时间戳以秒为单位,但 Javascript 日期需要毫秒。但是 JWT 和 Javascript Date 构造函数都使用了“自纪元”的思想。所以只需将 exp 乘以 1000。

new Date(exp * 1000)