New Twitch API: User Abfrage per GET

xep22

Banned
Registriert
Apr. 2018
Beiträge
395
hallo,

ich will mit der "New Twitch API" Nutzer Daten abfragen: https://dev.twitch.tv/docs/api/reference#get-users

In der Doku ist nur ein Beispiel mit cURL bzw. auch ein Code mit GET, aber da wird nicht die Client-ID mitgegeben, welche aber notwendig ist...:

Code:
Must provide a valid Client-ID or OAuth token


In der Doku sind die Beispiele:
PHP:
GET https://api.twitch.tv/helix/users?login=<login name>&id=<user ID>...

Code:
curl -H 'Client-ID: XXXXXXXXXXX'
-X GET 'https://api.twitch.tv/helix/users?login=USERNAME'

Nun meine Frage, wie gebe ich diese denn mit an ? hab schon probiert &clientid, &client_id , aber geht alles nicht.
 
Zuletzt bearbeitet:
was steht da ? da steht nicht das Parameter für clientid für GET...
 
~ entfernt, Frage falsch verstanden
 
Zuletzt bearbeitet:
GET ist nur eine http Methode. Es spielt keine Rolle ob eine Anfrage via python, curl oder php erfolgt. Wie schon verlinkt wurde muss die Client-ID als neuer Header, dafür das -H im curl Aufruf, mitgegeben werden. Wie ganz oben auf der Doku-Seite auch zu lesen wird die Seite entsprechend mit inkrafttreten der Änderung am 30.4 wohl aktualisiert.
 
also erstmal versuche ich quasi einfach per URL die Abfrage...

Code:
https://api.twitch.tv/helix/users?login=NUTZERNAME&client_id=XXXXXXXX

Aber das parameter client_id heißt scheinbar anders, erhalte nämlich:

Code:
{"error":"Unauthorized","status":401,"message":"Must provide a valid Client-ID or OAuth token"}

Die Client ID ist richtig. mit cURL funktioniert es ja.

edit: also es muss cURL sein? wie genau setze ich das dann um ?
 
Wenn du die Abfrage per Browser machen willst musst du ein entsprechendes Plugin haben, wo du eigene Header setzen kannst. Denn per Default wird beim normalen Aufruf natürlich kein Client-ID Header erstellt.

Wenn du an die API via Code, also in beliebiger Programmiersprache, dran willst musst du in der entsprechenden Sprache ebenfalls diesen Header setzen.

In dem Posting: https://discuss.dev.twitch.tv/t/requiring-oauth-for-helix-twitch-api-endpoints/23916
gibts auch ein curl Beispiel.
 
aber wie setze ich das in php um ? 😅
 
So oder wie ? :D geht aber nicht.

PHP:
header('Client-ID: XXXXXXXXXXXXXXX');
$json=json_decode(file_get_contents('https://api.twitch.tv/helix/users?login=USERNAME'));
 
header() ist zum senden eines headers innerhalb eines replys und nicht beim request.

in https://www.php.net/manual/en/function.file-get-contents.php steht doch ein beispiel:
PHP:
<?php
// Create a stream
$opts = array(
  'http'=>array(
    'method'=>"GET",
    'header'=>"Accept-language: en\r\n" .
              "Cookie: foo=bar\r\n"
  )
);

$context = stream_context_create($opts);

// Open the file using the HTTP headers set above
$file = file_get_contents('http://www.example.com/', false, $context);
?>

ich weiss schon, warum ich kein php mag... :p
 
Ohne jetzt PHP zu kennen: Ich sehe keine Verknüpfung zwischen dem gesetzen Header und der abgesendeten GET-Abfrage, kenne aber die Mechanismen von PHP auch nicht. Wahrscheinlich muss da noch ein Zwischenschritt erfolgen.
 
Also so erhalte ich nur eine weiße Seite :

PHP:
<?php
// Create a stream
$opts = array(
  'http'=>array(
    'method'=>"GET",
    'header'=>"Accept-language: en\r\n" .
              "Client-ID: XXXXXXXXXXXX"
  )
);

$context = stream_context_create($opts);
// Open the file using the HTTP headers set above
$file = file_get_contents('https://api.twitch.tv/helix/users?login=USERNAME', false, $context);
?>
 
PHP:
$headers = [
    "Client-ID: XXXXXXXXXXXX",
];
$handle = curl_init('https://api.twitch.tv/helix/users?login=USERNAME');
curl_setopt($handle, CURLOPT_RETURNTRANSFER, true);
curl_setopt($handle, CURLOPT_HTTPHEADER, $headers);

$response = curl_exec($handle);
print_r($response);
 
  • Gefällt mir
Reaktionen: xep22
Zurück
Oben