При попытке получить ключ методом \VK\OAuth\User\User::getTokens сервер VK возвращает ошибку:
Uncaught VK\Exceptions\VKOAuthException: verifier is missing or invalid. OAuth error invalid_request.
Все сделано по Authorization Flow и несколько раз проверено. Также пробовал вложенный пример vendor/vkcom/vk-php-sdk/examples/oauth/user.php - та же ошибка
Полдня мучений, логирований и проч., и выяснилось, что при передаче code_verifier в обмен на токен, он зачем-то опять хэшируется, практически также как при генерации для ссылки авторизации при получении code_challenge.
После явной подмены code_verifier в параметрах запроса на нехэшированную версию $codeVerifier, access token удалось таки получить!
Ошибка в конструкторе \VK\OAuth\User\DTO\TokensParams::__construct вот здесь:
public function __construct(int $client_id, string $code_verifier, string $redirect_uri, string $code, string $device_id)
{
...
$this->code_verifier = rtrim(strtr(base64_encode($code_verifier), '+/', '-_'), '=');
...
}
При попытке получить ключ методом
\VK\OAuth\User\User::getTokensсервер VK возвращает ошибку:Uncaught VK\Exceptions\VKOAuthException: verifier is missing or invalid. OAuth error invalid_request.Все сделано по Authorization Flow и несколько раз проверено. Также пробовал вложенный пример
vendor/vkcom/vk-php-sdk/examples/oauth/user.php- та же ошибкаПолдня мучений, логирований и проч., и выяснилось, что при передаче
code_verifierв обмен на токен, он зачем-то опять хэшируется, практически также как при генерации для ссылки авторизации при получении code_challenge.После явной подмены
code_verifierв параметрах запроса на нехэшированную версию$codeVerifier, access token удалось таки получить!Ошибка в конструкторе
\VK\OAuth\User\DTO\TokensParams::__constructвот здесь: