2015-05-24 18 views
25

dostanę okaziciela token z punktu końcowego API i ustaw następujące opcje:poprawny sposób ustawić okaziciela żeton z zwinięcie

$authorization = "Bearer 080042cad6356ad5dc0a720c18b53b8e53d4c274" 

Następny chcę użyć CURL aby uzyskać dostęp do bezpiecznego punktu końcowego jednak jestem pewien, w jaki sposób lub gdzie ustawić token na okaziciela.

Próbowałem tego, ale jednak to nie działa:

curl_setopt($ch, CURLOPT_HTTPHEADER, array('Content-Type: application/json' , $authorization)); 
    curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "POST"); 
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); 
    curl_setopt($ch, CURLOPT_POSTFIELDS,$post); 
    curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1); 
    $result = curl_exec($ch); 
    curl_close($ch); 
    return json_decode($result); 

EDIT:

Zgodnie z dokumentacją, ja powinienem być pomocą okaziciela żeton jako takie: https://apigility.org/documentation/auth/authentication-oauth2

GET /oauth/resource HTTP/1.1 
Accept: application/json 
Authorization: Bearer 907c762e069589c2cd2a229cdae7b8778caa9f07 
+0

to jest PHP? W jaki sposób serwer oczekuje, aby ten token został wysłany? Nagłówek? –

+0

Hi - tak to jest PHP, zazwyczaj token na okaziciela ustawiony jest jako nagłówek. – HappyCoder

+0

Jaka jest nazwa nagłówka? –

Odpowiedz

34

Wymień:

$authorization = "Bearer 080042cad6356ad5dc0a720c18b53b8e53d4c274" 

z:

$authorization = "Authorization: Bearer 080042cad6356ad5dc0a720c18b53b8e53d4c274"; 

aby to ważne i działa nagłówek Authorization.

+0

Witam - to jest coś, co próbowałem, jednak z tym samym problemem. Podejrzewam, że ten problem może mieć coś wspólnego z aktualizacją Apigility, ponieważ nie mogę tego również użyć do pracy z listonoszem. – HappyCoder

+0

Rozwiązano to przez wycofanie ApiGility do poprzedniej stabilnej wersji. Dzięki za twoje wejście, choć nie moje rozwiązanie, jest to rozwiązanie dla innych z podobnym problemem i pozwoliło mi to na właściwy tor. Dziękuję za twój wkład! – HappyCoder

0

Jeśli pracujesz z prywatnym tokena zamiast (jak Gitlab API), należy wymienić:

$authorization = "Authorization: Bearer 080042cad6356ad5dc0a720c18b53b8e53d4c274"

z:

$authorization = "PRIVATE-TOKEN 080042cad6356ad5dc0a720c18b53b8e53d4c274";

0
  1. Musisz zainicjować URL żądania CURL
  2. Pl Dane kod do JSON
  3. Tworzenie funkcji, dzięki czemu można ponownie użyć kodu później

    function jwt_request($token, $post=[]) { 
    
        $ch = curl_init('https://REQUEST_URL/v1/data...'); // INITIALISE CURL 
    
        header('Content-Type: application/json'); 
        $post = json_encode($post,true); // Create JSON string from data ARRAY 
        $authorization = "Authorization: Bearer ".$token; 
        curl_setopt($ch, CURLOPT_HTTPHEADER, array('Content-Type: application/json' , $authorization)); 
        curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "POST"); 
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); 
        curl_setopt($ch, CURLOPT_POSTFIELDS,$post); 
        curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1); 
        $result = curl_exec($ch); 
        curl_close($ch); 
        return json_decode($result); 
    
    } 
    
    $token = "080042cad6356ad5dc0a720c18b53b8e53d4c274"; // GET YOUR TOKEN FROM A COOKIE OR DB 
    $post = array('some_data'=>array('some','values')); // SOME ARRAY OF DATA 
    
    print_r(jwt_request($token,$post)); // GET RESULTS 
    

Użyj go jako jeden sposób lub 2-drożnych wniosków:

jwt_request($token,$post); // - To pass data 

jwt_request($token); // - To retreave data 
Powiązane problemy