动态设置opentok中的token的EXPIRE_TIME为.net中当前时间的15分钟

Set EXPIRE_TIME for token in opentok of 15 minutes from current time in .net dynamically

本文关键字:net 15分钟 时间 opentok 设置 中的 token 动态 EXPIRE TIME      更新时间:2023-09-26

我是这样让令牌以天为单位过期的:

tokenOptions.Add(TokenPropertyConstants.EXPIRE_TIME, new DateTime(2014, 03, 24));   //date of tomorrow

我的主要问题是我需要从服务器端设置EXPIRE_TIME。如何修复EXPIRE_TIME从创建时间15分钟?

我试过了,但是不工作:

tokenOptions.Add(TokenPropertyConstants.EXPIRE_TIME, new DateTime(2014, 03, 23, 18, 20, 00));  //15 minutes more than current time

tokenOptions下EXPIRE_TIME的代码如下所示

public string GenerateToken(string sessionId)
        {
            Dictionary<string, object> options = new Dictionary<string, object>();
            return GenerateToken(sessionId, options);
        }
        public string GenerateToken(string sessionId, Dictionary<string, object> options)
        {
            NameValueCollection appSettings = ConfigurationManager.AppSettings;
            options.Add("session_id", sessionId);
            options.Add("create_time", (int)(DateTime.UtcNow - new DateTime(1970, 1, 1)).TotalSeconds);
            options.Add("nonce", RandomNumber(0, 999999));
            if (!options.ContainsKey(TokenPropertyConstants.ROLE))
            {
                options.Add(TokenPropertyConstants.ROLE, "publisher");
            }
            // Convert expire time to Unix Timestamp
            if (options.ContainsKey(TokenPropertyConstants.EXPIRE_TIME))
            {
                DateTime origin = new DateTime(1970, 1, 1, 0, 0, 0);
                DateTime expireTime = (DateTime)options[TokenPropertyConstants.EXPIRE_TIME];
                TimeSpan diff = expireTime - origin;
                options[TokenPropertyConstants.EXPIRE_TIME] = Math.Floor(diff.TotalSeconds);
            }
            string dataString = string.Empty;
            foreach (KeyValuePair<string, object> pair in options)
            {
                dataString += pair.Key + "=" + HttpUtility.UrlEncode(pair.Value.ToString()) + "&";
            }
            dataString = dataString.TrimEnd('&');
            string sig = SignString(dataString, appSettings["opentok_secret"].Trim());
            string token = string.Format("{0}{1}", appSettings["opentok_token_sentinel"], EncodeTo64(string.Format("partner_id={0}&sdk_version={1}&sig={2}:{3}", appSettings["opentok_key"], appSettings["opentok_sdk_version"], sig, dataString)));
            return token;
        }

令牌过期时,用户不会自动被踢出会话。会话一直持续到用户离开会话为止。当用户试图再次加入会话时,他们的过期令牌将阻止他们加入。

我要做的是在客户端设置超时并在15分钟后调用session.disconnect()。如果他们尝试再次连接,它将无法工作,因为令牌已经过期。