3

目标

我正在尝试按照 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();
    }
  }
}
4

0 回答 0