php - Forma correcta de configurar el token de portador con CURL
http oauth-2.0 (4)
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
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
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);
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";