PHP Guzzle具有基本身份验证和承载令牌

时间:2016-06-25 14:16:25

标签: php guzzle6

我试图与infojobs-api建立联系,文档探讨如何以这种方式建立:

  

GET / api / 1 / application HTTP / 1.1
  主持人:api.infojobs.net       授权:基本QWxhZGRpbjpvcGVuIHNlc2FtZQ ==,Bearer 07d18fac-77ea-461f-9bfe-a5e9d98deb3d

https://developer.infojobs.net/documentation/user-oauth2/index.xhtml

这是我的代码:

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

API / Guzlle给了我这个错误:

  

致命错误:未捕获GuzzleHttp \ Exception \ ClientException:客户端错误:GET https://api.infojobs.net/api/1/curriculum导致401 No Autorizado响应:   {"错误":" 102"," error_description":"客户端凭据无效","时间戳":& #34; 2016-06-25T14:08:54.774Z"}    在/app/vendor/guzzlehttp/guzzle/src/Exception/RequestException.php:107

所以我做错了什么,但我找不到它的错误。

任何想法,谢谢。

奥斯卡

1 个答案:

答案 0 :(得分:13)

我正在查看您的请求的HTTP标头:

Authorization: Basic QWxhZGRpbjpvcGVuIHNlc2FtZQ==,Bearer 07d18fac-77ea-461f-9bfe-a5e9d98deb3d

您有一个Authorization标头,其中包含逗号分隔值。他们并没有彼此分开。因此,您可以像Guzzle的auth密钥一样从中受益。

您应该做的是手动设置授权标头:

$newresponse = $basicauth->request(
    'GET',
    'api/1/curriculum',
    ['debug'   => true], 
    ['headers' => 
        [
            'Authorization' => "Basic {$credentials},Bearer {$acceso->access_token}"
        ]
    ]
)->getBody()->getContents();