基本認証とベアラートークンを使用した PHP Guzzle 質問する

基本認証とベアラートークンを使用した PHP Guzzle 質問する

私は infojobs-api との接続を試みていますが、その方法はドキュメントで次のように説明されています。

GET /api/1/application HTTP/1.1
ホスト: api.infojobs.net 認証: Basic 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: {"error":"102","error_description":"クライアント資格情報が無効です","timestamp":"2016-06-25T14:08:54.774Z"} (/app/vendor/guzzlehttp/guzzle/src/Exception/RequestException.php:107)

つまり、何か間違ったことをしているのですが、何が間違っているのかがわかりません。

何かアイデアがあれば、よろしくお願いします。

オスカー

ベストアンサー1

リクエストの HTTP ヘッダーを確認したところ、次のようになりました。

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

カンマで区切られた値を含むヘッダーがありますAuthorization。それらは互いに離れていません。そのため、authあなたが行ったように、Guzzle のキーの恩恵を受けることはできません。

行うべきことは、Authorization ヘッダーを手動で設定することです。

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

おすすめ記事