Я пытаюсь сгенерировать токен доступа, используя код авторизации для API Box.com. Я испробовал множество способов использования Guzzle для отправки запроса в API-интерфейс OAuth / token Box.com для генерации токена доступа с использованием кода авторизации. Однако я пока не добился успеха.
Вот следующий код, который я сейчас пытаюсь.
use Guzzle\Http\Client;
$client = new Client();
$request = $client->post('http://www.box.com/api/oauth2/token', [], [
'grant_type' => 'authorization_code',
'client_id' => 'mobvhx1foqtclyccza4hdvst11lkdcjb',
'client_secret' => 'fRpwlcRxM5rumDL2WnjA0F69QaiRZxct',
'code' => 'CSSBd0tJnYLRTowxg0tS4h2mA7Vow0WS'
]);
$response = $request->send();
И вот ошибка, которую я получаю 🙁
Fatal error: Uncaught exception 'Guzzle\Http\Exception\ClientErrorResponseException' with message 'Client error response [status code] 400 [reason phrase] Bad Request [url] http://www.box.com/api/oauth2/token' in vendor/guzzle/guzzle/src/Guzzle/Http/Exception/BadResponseException.php:43 Stack trace: #0 vendor/guzzle/guzzle/src/Guzzle/Http/Message/Request.php(145): Guzzle\Http\Exception\BadResponseException::factory(Object(Guzzle\Http\Message\EntityEnclosingRequest), Object(Guzzle\Http\Message\Response)) #1 [internal function]: Guzzle\Http\Message\Request::onRequestError(Object(Guzzle\Common\Event), 'request.error', Object(Symfony\Component\EventDispatcher\EventDispatcher)) #2 vendor/symfony/event-dispatcher/EventDispatcher.php(158): call_user_func(Array, Object(Guzzle\Common\Event), 'request.error', Object(Symfony\Component\EventDispatcher\EventDispatcher)) #3 vendor/symfony/event in vendor/guzzle/guzzle/src/Guzzle/Http/Exception/BadResponseException.php on line 43
Может кто-нибудь помочь, что я здесь делаю не так?
Я сам разобрался с этим, сделав URL всех параметров закодированными и отправив запрос в HTTPS. Вот правильный код, который кто-то может найти полезным.
$request = $client->post('https://www.box.com/api/oauth2/token', [], [
'grant_type' => urlencode('authorization_code'),
'client_id' => urlencode('mobvhx1foqtclyccza4hdvst11lkdcjb'),
'client_secret' => urlencode('fRpwlcRxM5rumDL2WnjA0F69QaiRZxct'),
'code' => urlencode('CSSBd0tJnYLRTowxg0tS4h2mA7Vow0WS')
]);
Других решений пока нет …