php Forma correcta de configurar el token de portador con CURL




http oauth-2.0 (4)

Obtengo el token de portador desde un punto final de API y establezco lo siguiente:

$authorization = "Bearer 080042cad6356ad5dc0a720c18b53b8e53d4c274"

A continuación, deseo utilizar CURL para acceder al punto final seguro, pero no estoy seguro de cómo o dónde establecer el token de portador.

Lo he intentado pero no funciona:

 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);

EDITAR:

Según la documentación, se supone que debo usar el token de portador como tal: https://apigility.org/documentation/auth/authentication-oauth2

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

Reemplazar:

$authorization = "Bearer 080042cad6356ad5dc0a720c18b53b8e53d4c274"

con:

$authorization = "Authorization: Bearer 080042cad6356ad5dc0a720c18b53b8e53d4c274";

para que sea un encabezado de Autorización válido y en funcionamiento.


Si está trabajando con un token privado ( como la API de Gitlab ), debe reemplazar:

$authorization = "Authorization: Bearer 080042cad6356ad5dc0a720c18b53b8e53d4c274"

con:

$authorization = "PRIVATE-TOKEN 080042cad6356ad5dc0a720c18b53b8e53d4c274";


Esta es una función CURL que utilizo para enviar / recuperar datos entre mis aplicaciones, que debería funcionar bien dentro de cualquier aplicación PHP que admita oAuth

    function jwt_request($token, $post) {

       $ch = curl_init('https://APPURL.com/api/json.php'); // INITIALISE CURL

       header('Content-Type: application/json');
       $post = json_encode($post); // Create JSON string from data ARRAY
       $authorization = "Authorization: Bearer ".$token; // **Prepare Autorisation Token**
       curl_setopt($ch, CURLOPT_HTTPHEADER, array('Content-Type: application/json' , $authorization )); // **Inject Token into Header**
       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);

    }

Úselo como solicitudes de ida o de dos vías:

$token = "080042cad6356ad5dc0a720c18b53b8e53d4c274"; // GET YOUR TOKEN FROM A COOKIE OR DB
$post = array('some_trigger'=>'...','some_values'=>'...'); // ARRAY OF DATA WITH A TRIGGER
$request = jwt_request($token,$post); // - To pass/retrieve data

Esto debería funcionar

$token = "YOUR_BEARER_AUTH_TOKEN";
//setup the request, you can also use CURLOPT_URL
$ch = curl_init('API_URL');

// Returns the data/output as a string instead of raw data
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);

//Set your auth headers
curl_setopt($ch, CURLOPT_HTTPHEADER, array(
   'Content-Type: application/json',
   'Authorization: Bearer ' . $token
   ));

// get stringified data/output. See CURLOPT_RETURNTRANSFER
$data = curl_exec($ch);

// get info about the request
$info = curl_getinfo($ch);
// close curl resource to free up system resources
curl_close($ch);




oauth-2.0