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

Osk*_*lvo 8 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);
Run Code Online (Sandbox Code Playgroud)

API/Guzlle给我回复此错误:

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

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

任何想法,谢谢.

奥斯卡

rev*_*evo 21

正如我看到您的请求的HTTP标头:

Authorization: Basic QWxhZGRpbjpvcGVuIHNlc2FtZQ==,Bearer 07d18fac-77ea-461f-9bfe-a5e9d98deb3d
Run Code Online (Sandbox Code Playgroud)

您有一个Authorization包含逗号分隔值的标头.他们并没有彼此分开.所以你不能auth像你所做的那样从Guzzle的关键中获益.

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

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

  • 在我的情况下,我只需要添加“ Authorization => Bearer {$ token}”,并且还必须将“ debug”更改为“ false”,因为我遇到了一个Guzzle错误。但最终它起作用了:) (2认同)

Nic*_*eld 12

对于邮寄电话,这对我有用:

$guzzle = new Client(['base_uri' => self::APIURL]);

$raw_response = $guzzle->post($endpoint, [
  'headers' => [ 'Authorization' => 'Bearer ' . $publicKey ],
  'body' => json_encode($data),
]);

$response = $raw_response->getBody()->getContents();
Run Code Online (Sandbox Code Playgroud)