Как добавить токен OAuth в js для twitch api - PullRequest
1 голос
/ 07 мая 2020

Я работаю на веб-сайте через банкомат, и я не идеален с javascript Я знаю основы, но не более того. Но через 2 дня мой сценарий Twitch заработал идеально. Сегодня утром все работало нормально, но теперь скрипт просто не работает.

Я получаю эту ошибку. Я думаю, это основная ошибка c, но я не знаю, где я беру токен OAuth и как я отправляю его с js. {"error":"Unauthorized","status":401,"message":"OAuth token is missing"}

вот мой полный идентификатор клиента код подвергается цензуре.

<script>
var streamers = ["rapteyy","stylerfn_", "jannisz","fleoxfn","leonflares","maestrofnbr","frayfn","flikk"];

 var twitchapi = "https://api.twitch.tv/helix/users?login=" ;
  var tip = twitchapi + streamers;
    tip = tip.replace(/,/g, "&login=");

var twitchapi2 = "https://api.twitch.tv/helix/streams?user_login=" ;
  var tip2 = twitchapi2 + streamers;
    tip2 = tip2.replace(/,/g, "&user_login=");  

    var logo;
    var channel;
    var status;
    var title
    var image;
    var link;
    var viewer;

$.ajax({
    type: "GET",
    dataType: "json",
    url: tip,
 headers: {
   'Client-ID': '****'
 },
    success: function(response) {
 for (i = 0; i <= streamers.length; i++){
   logo = response.data[i].display_name;
   image = response.data[i].profile_image_url;
   channel = response.data[i].id;
   link = "https://www.twitch.tv/" + logo;

    $("#results").append("<div class='row toggleoffline' id = '" + logo + "''><div class ='box offlinebox' id = 'offline' onclick ='" + logo +  "()'><img class = 'imagesml' src ='" + image + "'><p class = 'name' >" + logo + " </p> <div class = 'stat'><p> </p><a class='twitch' href='" + link + "'><svg xmlns='http://www.w3.org/2000/svg' width='24' height='24' viewBox='0 0 24 24'><path d='M2.149 0l-1.612 4.119v16.836h5.731v3.045h3.224l3.045-3.045h4.657l6.269-6.269v-14.686h-21.314zm19.164 13.612l-3.582 3.582h-5.731l-3.045 3.045v-3.045h-4.836v-15.045h17.194v11.463zm-3.582-7.343v6.262h-2.149v-6.262h2.149zm-5.731 0v6.262h-2.149v-6.262h2.149z' fill-rule='evenodd' clip-rule='evenodd'/></svg></a></div></div></div>");

   $.ajax({
    type: "GET",
     dataType: "json",
     async: false,
    url: tip2,
 headers: {
   'Client-ID': '****'
 },

 success: function(response2) {
  for (var j = 0; j < streamers.length; j++) {
   if (response.data[i].id === response2.data[j].user_id)
   {status = "online"
    viewer = response2.data[j].viewer_count;
    title = response2.data[j].title;
    var child = document.getElementById(logo);
    var parent = child.parentNode;
    parent.removeChild(child);

  var iframetv = document.getElementById('iframe');
  var parenttv = iframetv.parentNode;
  parenttv.removeChild(iframetv);
  new Twitch.Embed("twitch-embed", {
        width: "100%",
        height: "100%",
        channel: logo,
        theme: "white",
        chat: "mobile",
        allowfullscreen: "false",
        layout: "video"
      });

    $("#results").prepend("<div class='row toggleonline' id ='toggleonline'><div class ='box onlinebox' id = 'online' onclick ='" + logo +  "()'><img class = 'imagesml' src ='" + image + "'><p class = 'name' >" + logo + "</p><div class = 'stat'><p> </p> <p class='view'>" + viewer + "</p><a class='twitch' href='" + link + "'><svg xmlns='http://www.w3.org/2000/svg' width='24' height='24' viewBox='0 0 24 24'><path d='M2.149 0l-1.612 4.119v16.836h5.731v3.045h3.224l3.045-3.045h4.657l6.269-6.269v-14.686h-21.314zm19.164 13.612l-3.582 3.582h-5.731l-3.045 3.045v-3.045h-4.836v-15.045h17.194v11.463zm-3.582-7.343v6.262h-2.149v-6.262h2.149zm-5.731 0v6.262h-2.149v-6.262h2.149z' fill-rule='evenodd' clip-rule='evenodd'/></svg></a></div></div></div>");
   }
 else {

      }
      }
  }

 });
 }
    }
});

 function toggle(e) {
    var all = document.getElementsByClassName('toggleoffline');

    for(var i = 0; i < all.length; i++) {
        // First make all of the elements with the same class hidden.
        if (all[i].style.display === 'none') {
            all[i].style.display = 'flex';
        }

        // Then make the clicked element visible.
        else {all[i].style.display = 'none';}
    }
}

function toggle2(f) {
    var all = document.getElementsByClassName('toggleonline');

      var all2 = document.getElementsByClassName('toggleoffline');

    for(var k = 0; k < all.length; k++) {
        // First make all of the elements with the same class hidden.
        if (all[k].style.display === 'none') {
            all[k].style.display = 'flex';
        }

        else {
        all[k].style.display = 'none'
     }
    }
}

function toggle3(g) {
    var all = document.getElementsByClassName('row');

    for(var l = 0; l < all.length; l++) {
        // First make all of the elements with the same class hidden.
        if (all[l] !== this) {
            all[l].style.display = 'flex';
        }

        // Then make the clicked element visible.
        g.style.visibility = 'visible';
    }
}
</script>``` 

Ответы [ 2 ]

0 голосов
/ 20 мая 2020

С последними изменениями в API все теперь требует и Client-ID, и OAuth, прежде чем он вернет запрошенные значения.

https://discuss.dev.twitch.tv/t/requiring-oauth-for-helix-twitch-api-endpoints/23916

Проверка в вашем коде отсутствует токен OAuth. Вам нужно будет сгенерировать токен OAuth и добавить его в свой заголовок, прежде чем делать запросы.

https://dev.twitch.tv/docs/authentication/getting-tokens-oauth#oauth -implicit-code-flow

Попробуйте разместить

    $.ajax({
    type: "GET",
    dataType: "json",
    url: tip,
 headers: {
   'Client-ID': '****'
 },

с

    $.ajax({
    type: "GET",
    dataType: "json",
    url: tip,
 headers: {
   'Client-ID: CLIENT-ID_HERE',
   'Authorization: Bearer TOKEN_HERE'
 },

Javascript не моя сильная сторона, но добавление токена в заголовок заставит его работать.

0 голосов
/ 12 мая 2020

Возможно, вы захотите проверить их документацию / примечания к выпуску, поскольку они полностью обновили свои API прошлой ночью.

Эта ошибка «OAuth token is missing», вероятно, связана с тем, что в вашем коде отсутствует этап аутентификации . Вам необходимо указать токен доступа в заголовке авторизации. Этот шаг должен выполняться на сервере.

...