Twitch Helix Api Call mit oAuth und Client ID

Mit folgender Funktion, kann man mit der neuen Helix Api von Twitch weiterhin seine Abfragen machen. Neu dazu kommt, dass man neben der Client ID auch einen oAuth Token braucht und somit viele alte Scripts nicht mehr funktionieren. Die URL die unten erwähnt ist, muss an die Funktion übergeben werden. Als Beispiel:

$url = 'https://api.twitch.tv/helix/streams?user_login=someuser';
$data = returnTwitch($url, <client id>, <client secret>);
<?php
function returnTwitch($url, $clientid, $clientsecret) {

$cho = curl_init('https://id.twitch.tv/oauth2/token');
curl_setopt($cho, CURLOPT_FOLLOWLOCATION, 1);
curl_setopt($cho, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($cho, CURLOPT_POST, 1);
$fields = array(
'client_id' => $clientid,
'client_secret' => $clientsecret,
'grant_type' => 'client_credentials',
'token_type' => 'bearer',
'state' => $_GET['state']
);
curl_setopt($cho, CURLOPT_POSTFIELDS, $fields);
$output = curl_exec($cho);
$oauth = json_decode($output, true);
$token = $oauth['access_token'];

$ch = curl_init();
$headers=['Client-ID: ' . $clientid,'Authorization: Bearer ' . $token];
curl_setopt($ch, CURLOPT_URL,$url);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
$result = curl_exec ($ch);
curl_close ($ch);
$res = json_decode($result);
return $res;

}
?>

 

Filed under: PHP, VideoTagged with: , , ,

5 Comments

  1. Die Anzahl der aktuellen Zuschauer gäbs bei Streamlabs und wie sie all heissen halt weitaus konfortabler. Die fragen ja auch nur die API ab. Schau mal dass du die Client ID und Client Secret neu erstellst und achte drauf, dass bei URL auch dein Username zum Schluss steht.

    Viel Erfolg

  2. Hallöchen, ich habe deinen Code kopiert. Aber er meldet mir einen fehler in Zeile 27.

    Parse error: syntax error, unexpected ‘Authorization’ (T_STRING), expecting ‘]’ in /var/www/vhosts/txxxx/xxxx/xxxx.php on line 27

    • Hallo Thorsten,

      danke für den Hinweis. Da hat sich ein Tippfehler eingeschlichen.
      Versuch es nochmal und gib Bescheid ob es nun klappt.

      Viele Grüße

    • Hat geklappt danke 🙂 Jetzt hab ich nur noch einen Fehler der an mir selbst liegt xD
      object(stdClass)#3 (3) { [“error”]=> string(12) “Unauthorized” [“status”]=> int(401) [“message”]=> string(22) “OAuth token is missing” }

      Gibt doch nur die clientid und die secret id oder ? Die hatte ich mal vor längerer zeit erzeugt da ich mir mal ein loginsystem gebastelt habe.

      Oder ich muss dafür noch mal eine Erweiterung im Dev Portal in twitch erstellen?

      Ich versuche “eigentlich” nur irgend wie die Anzahl der aktuellen Zuschauer auszulesen.

      Das möchte ich dann irgend wie in c# einbinden. Dazu dann noch einen Timer.

      Idee ist, wenn z.b. aktuell 5 Zuschauer auf meinem Kanal sind, springt der Timer an. Diesen timer möchte ich dann in OBS einblenden. Sinkt die Zahl wieder auf unter 5 Zuschauer soll sich der Timer wieder resetten.

      Wie ich das ganze programmieren soll, habe ich noch keine Ahnung. Ich bin jetzt noch nicht der Profi was das programmieren betrifft.

      Auf jeden fall wollte ich irgend wie erst mal versuchen, zu prüfen, wieviel Zuschauer ich habe.
      Habe noch ein Script gefunden das zählt die Anzahl der User die im Chat sind. Aber da man ja dauernd zig Bots hat, möchte ich eben den Counter haben der auch Twitch nutzt. So werden die Tatsächlichen Zuschauer gezählt.

      Und wenn ich das habe, kann ich weiter Rätzel raten wie ich den Rest umsetze xD

    • Hmm irgend wie wurde meine Nachricht gelöscht. Also es funktioniert scheinbar jetzt.

      Wenn ich aber nun mit vardump die data variable aufrufe kommt:

      object(stdClass)#1 (2) { [“data”]=> array(0) { } [“pagination”]=> object(stdClass)#2 (0) { } }


Add a Comment

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.

Comment *
Name *
Email *
Website