2017-06-02 8 views
0

Also ich versuche, die https://api.thetvdb.com/swagger API über PHP zu verwenden.Senden "curl -X GET --header" über php curl funktioniert nicht

function tvdb_post ($url, $userinfo) { 
    $ch = curl_init($url); 
    $payload = json_encode($userinfo); 
    curl_setopt($ch, CURLOPT_POSTFIELDS, $payload); 
    curl_setopt($ch, CURLOPT_HTTPHEADER, array('Content-Type:application/json')); 
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); 
    $result = curl_exec($ch); 
    curl_close($ch); 
    $return = json_decode($result, true); 

    return $return; 
} 

$userinfo = array (
    'username' => 'dstealth', 
    'userkey' => '***{redacted}***', 
    'apikey' => '***{redacted}***' 
); 

$token = tvdb_post('https://api.thetvdb.com/login', $userinfo); 

ich dann kopieren Sie die Token und legt ihn auf der API Webseite des Token einreichen:

Ich habe erfolgreich zu bekommen, JWT Token von der API mit dem folgenden Verfahren verwaltet. Es gibt mir eine Bestätigungsnachricht.

Das Problem ergibt sich aus dem nächsten Schritt. Wenn ich die vorherigen Schritte auf der API-Website-Seite mache und dann den nächsten Schritt auf der API-Webseite mache, funktioniert das problemlos. Aber wenn ich versuche, den nächsten Schritt in PHP zu konvertieren, gibt es mir eine Meldung "Nicht autorisiert".

Der nächste Schritt auf der API-Webseite ist:

$authorization = "Authorization: Bearer ***{redacted}*** "; 

function tvdb_api ($url) { 
    $ch = curl_init(); 
    curl_setopt($ch, CURLOPT_URL, $url); 
    curl_setopt($ch, CURLOPT_HTTPHEADER, array('Content-Type: application/json', $authorization)); 
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); 
    $json = curl_exec($ch); 
    curl_close($ch); 
    $array = json_decode($json, true); 

    return $array; 
} 

$refresh = tvdb_api('https://api.thetvdb.com/refresh_token'); 
// This returns a "Not Authorized" error. 

mir jemand kann bitte sagen, was ich falsch mache zwischen der Umwandlung:

curl -X GET --header 'Accept: application/json' --header 'Authorization: Bearer <token>' 'https://api.thetvdb.com/refresh_token' 
// returns a response code 200 and refreshes the token successfully. 

in php mein nächsten Schritt wie folgt aussieht Nächster Schritt von der API-Webseite zu PHP?

+0

Ist die Variable '$ authorization 'im Funktionsumfang verfügbar? Ich denke nicht ... Feed es als Argument oder global. –

+0

... und natürlich sollte "-X GET" auf der ursprünglichen Zeile überhaupt nicht verwendet werden ... Siehe https://stackoverflow.com/questions/8498371/curl-get-and-x-get/ 8502004 # 8502004 –

Antwort

0

Die $ authorization-Variable befand sich außerhalb der Funktion und die Funktion versuchte, ihre Werte zu verwenden. Sobald ich es in die Funktion verschoben habe, funktionierte die Funktion wie erwartet. Entschuldigung für die Veröffentlichung!