Предполагается, что я хочу написать команду php для выкупа кода авторизации после его получения.Исключить код авторизации для OAuth api с API Google с помощью guzzle
Предполагается, что я использую guzzle для выполнения запроса, и я использую следующий код, где параметры должны быть правильными.
<?php
namespace Pherserk\PHPGMailCommander\Command;
use Guzzle\Http\Client;
/**
* Class ExchangeAuthorizationToken
* @package Pherserk\PHPGmailCommander\Command
*/
class ExchangeAuthorizationToken
{
private $url;
private $path;
private $grantType;
private $clientId;
private $clientSecret;
private $redirectUri;
public function __construct(array $config)
{
$this->url = $config['authorization_token']['code_exchange_uri'];
$this->path = $config['authorization_token']['code_exchange_path'];
$this->grantType = $config['authorization_token']['grant_type'];
$this->clientId = $config['client_id'];
$this->clientSecret = $config['client_secret'];
$this->redirectUri = $config['redirect_uri'];
}
/**
* @param string $accessToken
*/
public function run($accessToken = '4/the-authorization-token-here_hasbEen.obscured')
{
$client = new Client();
$client->setBaseUrl($this->url);
$client->setSslVerification(true);
$request = $client->post($this->path, null, null, ['exceptions' => false]);
$request->addHeader('Content-Type', 'application/x-www-form-urlencoded');
$query = $request->getQuery();
$query['code'] = $accessToken;
$query['client_id'] = $this->clientId;
$query['client_secret'] = $this->clientSecret;
$query['redirect_uri'] = $this->redirectUri;
$query['grant_type'] = $this->grantType;
$response = $request->send();
var_dump($response->getBody(true));
}
}
Я получаю код статуса 400 с мотивацией invalid_grant. Я получил код авторизации, который я использую после запроса авторизации пользователя и перенаправления. Что мне не хватает?