Javascript Twitch PubSub API返回ERR_BADAUTH

Javascript Twitch PubSub API返回ERR_BADAUTH,javascript,node.js,websocket,publish-subscribe,twitch,Javascript,Node.js,Websocket,Publish Subscribe,Twitch,我四处寻找我的问题的解决方案,我发现了类似的问题,但似乎没有任何解决方案能解决我的问题。我一直在用websocket的回复来结束这篇文章 网袋打开 {type:'响应', 错误:“ERR_BADAUTH”, nonce:'jeedsycjvgpwref' } 下面是一个代码示例。我正在生成与API调用相同的令牌,并且我的作用域是[“通道:读取:赎回”] var AT=''; GetWitchToken(process.env.GET_TOKEN,(res)=>{ AT=res.body.acce

我四处寻找我的问题的解决方案,我发现了类似的问题,但似乎没有任何解决方案能解决我的问题。我一直在用websocket的回复来结束这篇文章

网袋打开 {type:'响应', 错误:“ERR_BADAUTH”, nonce:'jeedsycjvgpwref' }

下面是一个代码示例。我正在生成与API调用相同的令牌,并且我的作用域是[“通道:读取:赎回”]

var AT='';
GetWitchToken(process.env.GET_TOKEN,(res)=>{
AT=res.body.access\u令牌;
验证令牌(AT);
twitchWebSocketConnect(AT);
返回;
})
功能twitchWebSocketConnect(AT){
log('Starting Twitch WebSocket',AT);
ws=新WebSocket('wss://pubsub-edge.twitch.tv');
ws.onopen=函数(事件){
console.log('websocketopen');
listensubsubsub(AT);
};
ws.onerror=函数(错误){
日志('Websocket错误',错误);
};
ws.onmessage=函数(事件){
message=JSON.parse(event.data);
控制台日志(消息);
//console.log('On Message',Message);
如果(message.type==“重新连接”){
log('Websocket重新连接…');
//setTimeout(连接、重新连接Interval);
}
};
ws.onclose=function(){
console.log('Websocket关闭');
log('Websocket重新连接');
//setTimeout(twitchWebSocketConnect(),1000);
};
}
函数nonce(长度){
var text=“”;
var-mablue=“ABCDEFGHIJKLMNOPQRSTUVXYZABCDFGHIJKLMNOPQRSTUVXYZ0123456789”;
对于(变量i=0;i
var AT = '';
getTwitchToken(process.env.GET_TOKEN,(res) => {
  AT = res.body.access_token;
  validateTwitchToken(AT);
  twitchWebSocketConnect(AT);
  return AT; 
})

function twitchWebSocketConnect(AT){
  console.log('Starting Twitch WebSocket', AT);
  ws = new WebSocket('wss://pubsub-edge.twitch.tv');

  ws.onopen = function(event) {
      console.log('Websocket Open');
      listenPubSub(AT);
  };

  ws.onerror = function(error) {
      console.log('Websocket Error', error);
  };

  ws.onmessage = function(event) {
      message = JSON.parse(event.data);
      console.log(message);
      // console.log('On Message', message);
      if (message.type == 'RECONNECT') {
          console.log('Websocket Reconnecting...');
          // setTimeout(connect, reconnectInterval);
      }
  };

  ws.onclose = function() {
    console.log('Websocket Closed');
      console.log('Websocket Reconnecting');
      // setTimeout(twitchWebSocketConnect(), 1000);
  };
}

function nonce(length) {
  var text = "";
  var possible = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789";
  for (var i = 0; i < length; i++) {
      text += possible.charAt(Math.floor(Math.random() * possible.length));
  }
  return text;
}

// function listen(topic) {
function listenPubSub(accessToken) {
  message = {
      type: 'LISTEN',
      nonce: nonce(15),
      data: {
          topics: [`channel-points-channel-v1.${process.env.TWITCH_CHANNEL_ID}`],
          auth_token: accessToken
      }
  };
  ws.send(JSON.stringify(message));
}