При отправке HTTP-запроса на отправку я получаю сообщение об ошибке:
«Доступ запрещен: неверный токен, неправильный код». Я пробовал все возможные решения, но не могу передать это ошибка.
Подробная информация об этой задаче:
Авторизация
URL-адрес защищен с помощью HTTP Basi c Аутентификация, что объясняется в главе 2 RFC2617, поэтому вы должны предоставить поле заголовка Authorization: в своем запросе POST
Для идентификатора пользователя HTTP Basi c Authentication используйте тот же адрес электронной почты, который вы указали в строке JSON . В качестве пароля укажите одноразовый пароль 10-di git, основанный на времени, соответствующий RFC6238 TOTP. Пароль авторизации Для генерации пароля TOTP вам необходимо использовать следующую настройку:
Вы должны прочитать RFC6238 (и список ошибок!) И самостоятельно получить правильный одноразовый пароль. Временной шаг X TOTP составляет 30 секунд. T0 равен 0. Используйте HMA C -SHA-512 для функции ha sh вместо HMA C -SHA-1 по умолчанию. Общий секрет токена - это ИД пользователя, за которым следует строковое значение ASCII «HENNGECHALLENGE003» (без двойных кавычек).
const axios = require('axios');
const base64 = require('base-64');
const utf8 = require('utf8');
const { totp } = require('otplib');
const ReqJSON = {
"github_url": "ABC",
"contact_email": "ABC"
}
const stringData = JSON.stringify(ReqJSON);
const URL = "ABC";
const sharedSecret = ReqJSON.contact_email + "HENNGECHALLENGE003";
totp.options = { digits: 10, algorithm: "sha512", epoch: 0 };
const MyTOTP = totp.generate(sharedSecret);
const isValid = totp.check(MyTOTP, sharedSecret);
console.log("Token Info:", {MyTOTP, isValid});
const authStringUTF = ReqJSON.contact_email + ":" + MyTOTP;
const bytes = utf8.encode(authStringUTF);
const encoded = base64.encode(bytes);
const createReq = async () => {
try {
const config = {
headers: {
'Content-Type': 'application/json',
"Authorization": "Basic " + encoded
}
};
console.log("Making request", {URL, ReqJSON, config});
const response = await axios.post(URL, stringData, config);
console.log(response.data);
} catch (err) {
console.error(err.response.data);
}
};
createReq();