J'essaie d'établir une connexion avec infojobs-api, la documentation explique comment le faire de cette manière:
GET/api/1/application HTTP/1.1
Hôte: api.infojobs.net Autorisation: Basic QWxhZGRpbjpvcGVuIHNlc2FtZQ ==, Bearer 07d18fac-77ea-461f-9bfe-a5e9d98deb3d
( https://developer.infojobs.net/documentation/user-oauth2/index.xhtml )
Et voici mon code:
$basicauth = new Client(['base_uri' => 'https://api.infojobs.net']);
$credentials = base64_encode(CLIENT_ID .':' . CLIENT_SECRET ) ;
$newresponse = $basicauth->request(
'GET',
'api/1/curriculum',
['debug' => true],
['auth' =>
['Basic', $credentials] ,
['Bearer', $acceso->access_token]
]
)->getBody()->getContents();
d($newresponse);
L'API/Guzlle me rend cette erreur:
Erreur fatale: Uncaught GuzzleHttp\Exception\ClientException: Erreur client:
GET https://api.infojobs.net/api/1/curriculum
a donné un401 No Autorizado
réponse: {"error": "102", "error_description": "Informations d'identification client non valides", "horodatage": "2016-06-25T14: 08: 54.774Z"} dans/app/vendor/guzzlehttp/guzzle /src/Exception/RequestException.php:107
Je fais donc quelque chose de mal, mais je ne trouve pas ce qui ne va pas.
Toute idée, merci.
Oskar
Comme je vois les en-têtes HTTP de votre demande:
Authorization: Basic QWxhZGRpbjpvcGVuIHNlc2FtZQ==,Bearer 07d18fac-77ea-461f-9bfe-a5e9d98deb3d
Vous avez un en-tête Authorization
qui contient une valeur séparée par des virgules. Ils ne sont pas séparés les uns des autres. Vous ne pouvez donc pas bénéficier de la clé auth
de Guzzle comme ce que vous avez fait.
Vous devez définir manuellement l'en-tête d'autorisation:
$newresponse = $basicauth->request(
'GET',
'api/1/curriculum',
['debug' => true],
['headers' =>
[
'Authorization' => "Basic {$credentials},Bearer {$acceso->access_token}"
]
]
)->getBody()->getContents();