OpenTok TokBox:开始直播时禁止 REST API 访问

OpenTok TokBox: REST API access forbidden when starting a live streaming broadcast

遵循 SDK docs 中概述的程序。

使用 .NET 的 WebRequest 进行 API 调用。 StatusCode "Forbidden" 与其他消息 "Invalid issuer format" 一起返回。

我不确定我应该如何为调用生成令牌。我链接到的部分中的说明简单地说:

REST API calls must be authenticated using a custom HTTP header — X-OPENTOK-AUTH — along with a JSON web token. Create the JWT token with the following claims.

这让我相信我要使用我选择的 JWT 库来创建令牌。所以我做了。我使用了 .NET 的 System.IdentityModel.Tokens.Jwt。

不过,在网站的 .NET 部分中,显示的是:

You can generate a token either by calling an OpenTokSDK.OpenTok instance's GenerateToken... method, or by calling a OpenTokSDK.Session instance's GenerateToken... method after creating it.

那是我应该做的吗?那是什么问题?

我可以包含我的代码,但如果我完全采用了错误的方法,那将毫无意义。

这里是 TokBox 开发者布道师。

OpenTok API 中有两个令牌概念。其中一个令牌用于验证 OpenTok Session,另一个是 JWT 令牌,用于验证您从服务器端发出的每个 HTTP 请求。

您尝试创建的令牌似乎用于与 OpenTok REST API 交互。您向 OpenTok REST API 发出的每个请求都必须有一个由您的 API 密钥和 API 秘密签名的 JWT 令牌。签名看起来像这样:

var payload = new Dictionary<string, object>
  {
    { "iss", "12321312" }, // apiKey
    { "ist", "project" },
    { "iat", now }, // current time
    { "exp", expiry } // current time + 300 seconds
  };

可以参考GenerateJWT method in the OpenTok .NET SDK。或者,您可以使用 OpenTok .NET SDK 发出 StartBroadcast 请求,该请求将为您处理 JWT 令牌创建。

最后,要验证 OpenTok 会话,您必须使用 OpenTok Server SDKs 之一。请注意,用于验证 OpenTok 会话的令牌不是由任何库创建的。