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(太平洋夏令时),登录一小时后。
但是,一些更好的验证方法:
- 使用Google的public端点
- 使用Google的客户端库
google-auth-library
JWT 时间戳以秒为单位,但 Javascript 日期需要毫秒。但是 JWT 和 Javascript Date 构造函数都使用了“自纪元”的思想。所以只需将 exp 乘以 1000。
new Date(exp * 1000)

从 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(太平洋夏令时),登录一小时后。
但是,一些更好的验证方法:
- 使用Google的public端点
- 使用Google的客户端库
google-auth-library
JWT 时间戳以秒为单位,但 Javascript 日期需要毫秒。但是 JWT 和 Javascript Date 构造函数都使用了“自纪元”的思想。所以只需将 exp 乘以 1000。
new Date(exp * 1000)