[Error: Failed to createSession. Error: An authentication error
occurred: (403) {"code":-1,"message":"Expired token"}]
我能够在我的localhost服务器上创建会话,但是什么时候 我把它放在生产中,其中有https发生错误。
我正在使用带有Meteor框架的tokbox。并将函数包装在方法中:
const opentok = new OpenTok(Meteor.settings.public.opentok.apiKey, Meteor.settings.public.opentok.apiSecret);
let createSessionSync = Meteor.wrapAsync(opentok.createSession, opentok);
答案 0 :(得分:1)
重新启动我们的本地开发服务器并没有为我们解决此问题。似乎开发人员正在更改其机器上的时区设置,并且系统时钟以某种方式与开发服务器不同步(尽管时区设置为当前的本地时间),但后来我们意识到Docker桌面正在创建错误的容器日期和时间。这支持上面@Adam Ullman的评论。
最初,我们通过更改Windows系统设置中的时区来解决此问题。此时,错误消失了,而没有重新启动服务器。但是,请参见下面的更新:
开发人员再次遇到相同的问题,时区更改这次没有解决。我们意识到,使用错误的时间设置创建了Docker容器(我们通过注销容器中的当前时间来确定这一点)。 docker容器中的日期比计算机时间晚了一天零几个小时。
请务必注意,仅删除图像并重新启动容器并不能解决问题。此外,我们发现应用程序中的其他JWT令牌也受到了影响,而不仅仅是opentok的。
要解决此问题,我们必须停止Docker Desktop并重新启动它。这会将所有新创建的容器时间重新同步到Windows机器时间。
答案 1 :(得分:0)
重新启动服务器似乎工作,但我只是不知道为什么创建会话与令牌错误有关,因为我还没有使用令牌