Цель
Я пытаюсь создать свой первый CLI, используя Node JS, следуя инструкциям, изложенным в руководстве по Sitepoint (см .: https://www.sitepoint.com/javascript-command-line-interface-cli-node-js/).
Для тех, кто пытается спросить, почему я создаю его в Node, это упражнение для меня, и я не стремлюсь оптимизировать свои усилия, используя другие средства, но спасибо за внимание
Проблема
Я пытаюсь установить соединение с Github, позволяющее пользователям организации вводить свои учетные данные (имя пользователя, пароль и, возможно, код 2FA) для подключения к учетной записи организации для доступа к репозиториям.
В настоящее время я могу застрять в той части, где я использую Octokit для передачи учетных данных в github для получения и сохранения его токена.
Ошибка: UnhandledPromiseRejectionWarning: HttpError: Invalid oneпароль для двухфакторной аутентификации
код:
module.exports = {
getPath: () => {
return conf.path;
},
getInstance: () => {
return octokit;
},
getStoredGithubToken: () => {
return conf.get('github.token');
},
setGithubCredentials: async () => {
const credentials = await inquirer.askCredentials();
_.extend(credentials, {
async on2fa () {
const questions = {
name: 'authorization code',
type: 'input',
message: 'Two-factor authentication Code:',
validate: function (value) {
if (value.length) {
return true;
} else {
return 'Two-factor authentication Code:';
}
}
}
return questions;
}
});
module.exports.registerNewToken(credentials);
},
registerNewToken: async (credentials) => {
const status = new Spinner('Authenticating you, please wait...');
status.start();
credentials.on2fa();
try {
const response = await octokit({
auth: credentials
});
response.repos.listForOrg({
org: '<organization>',
type: '<type>'
}).then(({data,status,headers})=>{
console.log({data,status,headers});
})
const token = response;
if (token) {
conf.set('github.token', token);
} else {
throw new Error("Missing Token", "GitHub token was not found in the response");
}
} catch (err) {
throw err;
} finally {
status.stop();
}
}
}