私は 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();