• Как исправить ошибку "invalid code_challenge" в ВК oauth2 при получении токена?

    @step1ov
     Код для создания codeVerifier на бэке:
    const codeVerifier = crypto
          .randomBytes(CODE_VERIFIER_LENGTH)
          .toString('hex');
        const sha256 = crypto.createHash('sha256');
        const codeChallenge = sha256.update(codeVerifier).digest('base64url');

    Далее передаем его на фронт и там обращаеамся в VK, код на фронте:
    VKID.Config.init({
              app: parseInt(vk_app_id), // Идентификатор приложения.
              redirectUrl: window.location.href.split("?")[0], // Адрес для перехода после авторизации.
              state, // Произвольная строка состояния приложения.
              codeChallenge, // Верификатор в виде случайной строки. Обеспечивает защиту передаваемых данных.
              scope: VK_AUTH_SCOPE, // Список прав доступа, которые нужны приложению.
              mode: VKID.ConfigAuthMode.InNewTab, // По умолчанию авторизация открывается в новой вкладке.
            });
    VKID.Auth.login();

    Код авторизации по коду:
    this.httpService.post<AuthResultDto>(VKID_AUTH_ENDPOINT, {
            grant_type: 'authorization_code',
            code_verifier: credentials.codeVerifier,
            redirect_uri: dto.redirectUrl,
            code: dto.code,
            client_id: dto.clientId,
            device_id: dto.deviceId,
            state: credentials.state,
          }).then((res) => {
    // Сохраняем токены
    })
    Ответ написан
    Комментировать