web-dev-qa-db-fra.com

PHP Guzzle avec authentification de base et jeton de porteur

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é un 401 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

8
Oskar Calvo

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();
20
revo