Détecter si un streamer est en live (API Twitch Helix)

Bonjour,

J'essaie de faire un code pouvant détecter quand un streamer est en ligne sur Twitch grace à l'API Twitch "HELIX". Je suis bloqué et je n'arrive pas malgré mes consultations sur de nombreux articles postés par d'autres personnes.

Voici où j'en suis
var xhr = new XMLHttpRequest();

xhr.open("GET", "https://api.twitch.tv/helix/streams?user_login=STREAMER", true);
xhr.setRequestHeader('Client-ID', 'CLIENT ID');
xhr.onreadystatechange = function(){
 if(xhr.readyState == 4){
  var data = JSON.parse(xhr.responseText);
  if(data["stream"] == null){
   $("#statut").html("Le stream est inactif")
  }else{
   $("#statut").html("Le stream est actif")
  }
 }
}
xhr.send();


Merci de m'aiguiller... ;)

EDIT :: Correction des balises de code ( ajout du LANGAGE pour avoir la coloration syntaxique )

3 réponses

  1. Modérateur
    Bonjour,
    Tu es bloqué .. c'est à dire ?
    Sur quoi bloques tu exactement ?
    As tu regardé dans la console javascript de ton navigateur ( pour ça je te conseille fortement de le faire sous firefox ) le résultat de ton appel ajax ?
    Il serait bien également d'ajouter quelques console.log dans ton code pour voir ce que valent tes différentes variables...
    Et bien entendu.. tu as remplacé le CLIENT-ID par ton identifiant (que tu dois obtenir sur le site de l'api )

    Je note également que tu sembles utiliser Jquery dans ta page ..... il serait donc plus simple d'utiliser la fonction ajax de jquery au lieu de faire du XMLHttpRequest..

    0
    1. Merci de m'avoir répondu Jordane,

      Quand je dis "Je suis bloqué", c'est-à-dire que mon code ne fonctionne pas. J'ai suivis vos conseils et voilà où j'en suis :

      $.ajax({
          url: "https://api.twitch.tv/helix/streams?user_login=STREAMER",
          dataType: 'json',
          headers: {
            'Client-ID': 'Mon Client ID'
          },
          success: function(data){
            console.log(data)
            if (data["stream"] == null)
            {
              $("#info").html("Le stream est inactif");
              console.log(data["stream"]);
            } else {
              $("#info").html("Le stream est actif");
              console.log(data["stream"]);
            }
          }
      });
      


      La console retourne l'erreur 401 qui est :
      {error: "Unauthorized", status: 401, message: "OAuth token is missing"}


      Qu'est-ce que cela signifie ?

      Merci,
      Thommy ;)
      0
      1. Modérateur
        Cela signifie que tu n'a pas envoyé le token d'authentification
        
         headers: {
           $.ajax({
            url: "https://api.twitch.tv/helix/streams?user_login=STREAMER",
            dataType: 'json',
              'Client-ID': '<your client id>',
              'Authorization': 'OAuth <your oauth token with channel_read scope>',
            success: function(data){
              console.log(data)
              if (data["stream"] == null)
              {
                $("#info").html("Le stream est inactif");
                console.log(data["stream"]);
              } else {
                $("#info").html("Le stream est actif");
                console.log(data["stream"]);
              }
            }
        });
        
        

        Documentation à lire en complément :
        https://dev.twitch.tv/docs/authentication/getting-tokens-oauth
        0
    2. J'ai envoyé une requête pour obtenir mon jeton (grâce à la documentation) mais cela ne retourne rien (désolé d'être si novice dans le monde de l'API ).

      var xhr = new XMLHttpRequest();
      xhr.open("POST", "https://id.twitch.tv/oauth2/token?client_id=MON CLIENT ID&client_secret=MON CLIENT SECRET&grant_type=client_credentials", 
      true);
      console.log(xhr.responseText);
      xhr.send;
      
         $.ajax({
          url: "https://api.twitch.tv/helix/streams?user_login=STREAMER",
          dataType: 'json',
           headers: {
            'Client-ID': 'CLIENT ID',
            'Authorization': 'OAuth TOKEN'},
          success: function(data){
            console.log(data)
            if (data["stream"] == null)
            {
              $("#info").html("Le stream est inactif");
              console.log(data["stream"]);
            } else {
              $("#info").html("Le stream est actif");
              console.log(data["stream"]);
            }
          }
      });
      


      P.S: J'ai obtenu le "secret du client" (client secret) sur la console de mon application Twitch en ayant cliquer sur nouveau secret.

      Encore merci,
      Thommy ;)
      0
      1. Modérateur
        Une fois obtenu le token .. il faut l'utiliser dans tes scripts
        En remplaçant le 'TOKEN' du texte 'OAuth TOKEN' .. par .. ben.. ton token.
        0