Skip to content

В текущей версии SDK v5.199.99 не работает получение пользовательского access_token из-за ошибки в передаче code_verifier #122

@shum16

Description

@shum16

При попытке получить ключ методом \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), '+/', '-_'), '=');
...
}

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions