@nikitapop

Как превратить запрос с cURL в Guzzle?

Есть апи amo crm, перед использованием надо авторизоваться. На curl все работает нормально, но хочу использовать guzzle. И вот на него переложить код не выходит.

Код AMO:
$subDomain = 'url';
$link = 'https://' . $subDomain . '.amocrm.ru/oauth2/access_token';

$data = [
    'client_id' => 'xxx,
    'client_secret' => xxx,
    'grant_type' => 'authorization_code',
    'code' => 'code',
    'redirect_uri' => 'url'
];

$curl = curl_init();
curl_setopt($curl,CURLOPT_RETURNTRANSFER, true);
curl_setopt($curl,CURLOPT_USERAGENT,'amoCRM-oAuth-client/1.0');
curl_setopt($curl,CURLOPT_URL, $link);
curl_setopt($curl,CURLOPT_HTTPHEADER,['Content-Type:application/json']);
curl_setopt($curl,CURLOPT_HEADER, false);
curl_setopt($curl,CURLOPT_CUSTOMREQUEST, 'POST');
curl_setopt($curl,CURLOPT_POSTFIELDS, json_encode($data));
curl_setopt($curl,CURLOPT_SSL_VERIFYPEER, 1);
curl_setopt($curl,CURLOPT_SSL_VERIFYHOST, 2);
$out = curl_exec($curl); 
$code = curl_getinfo($curl, CURLINFO_HTTP_CODE);
curl_close($curl);

$response = \json_decode($out, true);


Код на Guzzle:

$client = new Client([
    'headers' => [
        'Content-Type' => 'application/json',
        'User-Agent' => 'amoCRM-oAuth-client/1.0'
    ],
]);

$subDomain = 'url';
$link = 'https://' . $subDomain . '.amocrm.ru/oauth2/access_token';

$data = [
    'client_id' => 'xxx,
    'client_secret' => xxx,
    'grant_type' => 'authorization_code',
    'code' => 'code',
    'redirect_uri' => 'url'
];

try {
    $response = $client->request('POST', $link, ['form_params' => $data]);
} catch (GuzzleHttp\Exception\GuzzleException | Exception $e) {
    echo $e->getMessage() . \PHP_EOL;
}


Вылетает ошибка 400 Bad Request. Подскажите, пожалуйста, как мне поправить запрос?
  • Вопрос задан
  • 85 просмотров
Пригласить эксперта
Ответы на вопрос 2
@Nujabes37
:DEATH
Попробуй так отправить
$response = $client->post(
    $link,
    [
        GuzzleHttp\RequestOptions::JSON => $data,
    ]
);
Ответ написан
kspitfire
@kspitfire
Webdev: PHP (Symfony, Laravel), JS (Vue.js), Go.
А так?

$response = $client->post($link, [ 'body' => json_encode($data)]);
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы
АКМЭ сервис Санкт-Петербург
от 100 000 руб.
SaveTime Москва
от 100 000 руб.
Teamlead Ставрополь
от 25 000 до 50 000 руб.
06 дек. 2019, в 17:44
5000 руб./за проект
06 дек. 2019, в 17:41
1500 руб./за проект
06 дек. 2019, в 17:10
3000 руб./за проект