【问题标题】:Tokbox failed to create sessionTokbox 无法创建会话
【发布时间】:2017-09-04 15:37:48
【问题描述】:
[Error: Failed to createSession. Error: An authentication error
occurred: (403) {"code":-1,"message":"Expired token"}]

我能够在我的本地主机服务器上创建一个会话,但是当 我把它投入生产 - 它有 https - 发生错误。

我正在使用带有 Meteor 框架的 tokbox 并将函数包装在一个方法中:

const opentok = new OpenTok(Meteor.settings.public.opentok.apiKey, Meteor.settings.public.opentok.apiSecret);

let createSessionSync = Meteor.wrapAsync(opentok.createSession, opentok); 

【问题讨论】:

  • 您是否检查过生产环境中的apiKeyapiSecret 是否正确?
  • @bennygenel 是的,apikey 和 apiSecret 是正确的
  • 这看起来像是一个 tokbox 错误。你能添加一个回调到 createSession opentok.createSession(function(err, session) { if (err) return console.log(err); // save the sessionId console.log('session', session.sessionId); });。也许错误消息将有助于解决问题。
  • 返回的错误消息是令牌错误消息,奇怪的是我只是重新启动了我的服务器,一切都恢复正常了。我还没有创建任何令牌,它说令牌错误很奇怪
  • 当您调用 API 来创建会话时,会生成一个 JSON Web 令牌,该令牌具有编码的过期时间。我的猜测是您的生产服务器上的系统时间已关闭,因此它正在生成已经过期的令牌。然后重新启动服务器重新同步时钟,您就没有问题了。

标签: meteor opentok tokbox


【解决方案1】:

当我们遇到这个问题时,重新启动我们的本地开发服务器并没有为我们解决问题。似乎开发人员正在更改他们机器上的时区设置,并且系统时钟以某种方式与开发服务器不同步(尽管当时时区设置为他的本地时间),但后来我们意识到 Docker 桌面正在创建错误的容器日期和时间。这支持上面@Adam Ullman 的评论。

最初,我们通过更改 Windows 系统设置中的时区来解决此问题。此时错误消失了,无需重新启动服务器。但是,请参阅下面的更新:

更新:

开发人员再次遇到同样的问题,这次更改时区并没有解决它。我们意识到创建 Docker 容器时使用了错误的时间设置(我们通过注销容器中的当前时间来确定这一点)。 docker 容器中的日期比计算机时间晚了一天零几个小时。

请务必注意,仅删除图像并重新启动容器并不能解决问题。此外,我们发现应用程序中的其他 JWT 令牌也受到影响,而不仅仅是 opentok 的。

为了解决这个问题,我们不得不停止 Docker Desktop 并重新启动它。这会将所有新创建的容器时间重新同步到 Windows 机器时间。

【讨论】:

    【解决方案2】:

    重启服务器似乎可以工作,但我只是不知道为什么创建会话与令牌错误有关,因为我什至还没有使用令牌

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-10-12
      • 1970-01-01
      • 1970-01-01
      • 2018-03-05
      • 1970-01-01
      相关资源
      最近更新 更多