目标
我正在尝试按照 Sitepoint 教程中概述的说明使用 Node JS 创建我的第一个 CLI(请参阅:https ://www.sitepoint.com/javascript-command-line-interface-cli-node-js/ )。
对于那些试图问我为什么要在 Node 中创建它的人来说,这是对我自己的一个练习,而不是想通过其他方式来优化我的工作,但感谢你的考虑
问题
我正在尝试建立与 Github 的连接,允许组织的用户输入他们的凭据(用户名、密码和可能的 2FA 代码)以连接到组织帐户以访问存储库。
目前,我能够坚持使用 Octokit 将凭据传递到 github 以接收和存储其令牌的部分。
错误: UnhandledPromiseRejectionWarning:HttpError:双重身份验证的一次性密码无效
代码:
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();
}
}
}