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...
 
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.
 
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

Ähnliche Themen

Zurück
Oben