2015-05-24 12 views
25

ho la mia pedina portatore da un punto finale API e impostare la seguente:modo corretto di impostare portatore token con CURL

$authorization = "Bearer 080042cad6356ad5dc0a720c18b53b8e53d4c274" 

Avanti voglio usare CURL per accedere al endpoint sicuro però io sono sicuro su come o dove impostare il token Bearer.

Ho provato questo ma ma non funziona:

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:

Secondo la documentazione, dovrei essere usando il token portatore in quanto tale: https://apigility.org/documentation/auth/authentication-oauth2

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

È questo il PHP? In che modo il server si aspetta che questo token sia inviato? Un colpo di testa? –

+0

Ciao - sì, questo è PHP, generalmente il token al portatore è impostato come intestazione. – HappyCoder

+0

Qual è il nome dell'intestazione? –

risposta

34

Sostituisci:

$authorization = "Bearer 080042cad6356ad5dc0a720c18b53b8e53d4c274" 

con:

$authorization = "Authorization: Bearer 080042cad6356ad5dc0a720c18b53b8e53d4c274"; 

per renderlo un colpo di testa di autorizzazione valido e funzionante.

+0

Ciao - questo è qualcosa che ho provato, tuttavia con lo stesso problema. Sospetto che il problema potrebbe essere qualcosa a che fare con un aggiornamento di Apigility, dato che non riesco a farlo funzionare anche su Postman. – HappyCoder

+0

Risolto questo problema ripristinando ApiGility su una versione stabile precedente. Grazie per il tuo contributo, sebbene non sia la mia soluzione, è una soluzione per gli altri con un problema simile e mi ha portato sulla strada giusta. Grazie per il tuo contributo! – HappyCoder

0

Se si lavora con un token privata invece (come Gitlab API), è necessario sostituire:

$authorization = "Authorization: Bearer 080042cad6356ad5dc0a720c18b53b8e53d4c274"

con:

$authorization = "PRIVATE-TOKEN 080042cad6356ad5dc0a720c18b53b8e53d4c274";

0
  1. È necessario inizializzare URL richiesta CURL
  2. It i dati dei codici a JSON
  3. creare una funzione in modo da poter riutilizzare il codice in seguito

    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 
    

usarlo come un modo o in un 2 vie richieste:

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

jwt_request($token); // - To retreave data