web-dev-qa-db-ja.com

PHP基本認証と無記名トークンを使ったガズル

私は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/curriculum401 No Autorizadoレスポンス:{"error": "102"、 "error_description": "クライアント資格情報が無効です"、 "timestamp": "2016-06-25T14:08:54.774Z"}/app/vendor/guzzlehttp/guzzle /src/Exception/RequestException.php:107

だから私は何か悪いことをしていますが、何が悪いのかわかりません。

どんな考えでも、ありがとう。

オスカー

8
Oskar Calvo

私はあなたのリクエストのHTTPヘッダーを見ているので:

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

カンマ区切りの値を含むAuthorizationヘッダーがあります。彼らはお互いから離れていません。したがって、これまでのようにGuzzleのauthキーを利用することはできません。

あなたがすべきことは、Authorizationヘッダーを手動で設定することです:

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