APIを統合する必要があるため、関数を記述します。
public function test() {
$client = new GuzzleHttp\Client();
try {
$res = $client->post('http://example.co.uk/auth/token', [
'headers' => [
'Content-Type' => 'application/x-www-form-urlencoded',
],
'json' => [
'cliend_id' => 'SOMEID',
'client_secret' => '9999jjjj67Y0LBLq8CbftgfdreehYEI=',
'grant_type' => 'client_credentials'
]
]);
$res = json_decode($res->getBody()->getContents(), true);
dd($res);
}
catch (GuzzleHttp\Exception\ClientException $e) {
$response = $e->getResponse();
$result = json_decode($response->getBody()->getContents());
return response()->json(['data' => $result]);
}
}
応答者として私はメッセージを得ました:
{"data":{"error":"invalid_clientId","error_description":"ClientId should be sent."}}
POSTMANアプリで同じデータを使用して同じURLを実行しようとすると、正しい結果が得られます。
私のコードの何が悪いのですか?私は正しいform_params
を送信し、form_paramsをjsonに変更しようとしましたが、再び同じエラーが発生しました...
私の問題を解決するには?
問題は、Postmanではデータをフォームとして送信しているが、Guzzleでは'json'
オプション配列のキー。
'json'
〜'form_params'
探している結果が得られます。
$res = $client->post('http://example.co.uk/auth/token', [
'form_params' => [
'client_id' => 'SOMEID',
'client_secret' => '9999jjjj67Y0LBLq8CbftgfdreehYEI=',
'grant_type' => 'client_credentials'
]
]);
問題のドキュメントへのリンクは次のとおりです。 http://docs.guzzlephp.org/en/stable/quickstart.html#sending-form-fields
また、タイプミスに気づきました-cliend_id
の代わりに client_id
。