Невозможно получить доступ к / удалить секретные списки из учетной записи Github даже с правильными данными авторизации - PullRequest
0 голосов
/ 25 января 2019

Я очень много искал для этого, но не смог найти ничего полезного, и я не беглый разработчик Nodejs.

Я пытаюсь удалить свои старые и устаревшие секретные списки из моей учетной записи Github с помощьюприведенный ниже код, но он правильно выполняет только часть аутентификации.

#!/usr/bin/env node

const Octokit = require('@octokit/rest')
const octokit = new Octokit()

var async = require('async');
var github = new Octokit({
    version: '14.0.0',
    protocol: 'https'
});

github.authenticate({
    type: 'basic',
    username: '###############',
    password: '###############'
});

async.waterfall([
    function (callback) {
        console.log(github.gists.getAll());
        github.gists.getAll({}, callback);
    },
    function (gists, callback) {
        // filter gists by properties as needed
        async.each(gists, function (gist, callback) {
            github.gists.delete({
                id: gist.id
            }, callback);
        }, callback);
    }
], function (err) {
    if (err) {
        console.log('Execution failed: %s', err.message);
        process.exit(1);
    }
    console.log('Done!');
    process.exit(0);
});

Когда я запускаю приведенный выше скрипт в Gitbash (Windows 7 64Bit с установленным Node и Npm), он выдает эту ошибку:

Promise { <pending> }
Execution failed: {"message":"Not Found","documentation_url":"https://developer.github.com/v3"}

Но я знаю, что эти секретные суть есть.

В них даже не перечислены эти секретные суть, когда мне это нравится,

console.log(gist.id)

сразу после функции asyncЗвоните.

Любая помощь приветствуется.

1 Ответ

0 голосов
/ 25 января 2019

Похоже, вы используете устаревшую @octokit/rest. Убедитесь, что у вас установлена ​​последняя версия v16.3.1. Вы можете проверить, какую версию вы установили, запустив npm ls @octokit/rest в своем терминале.

Поскольку вы потенциально загружаете и удаляете много гистограмм, я бы порекомендовал использовать плагин throttle . Это поможет вам избежать злоупотребления / ограничения скорости. Вот полный код.

const Octokit = require('.')
  .plugin(require('@octokit/plugin-throttling'))

const octokit = new Octokit({
  auth: {
    username: '###############',
    password: '###############'
  },
  throttle: {
    onAbuseLimit: (retryAfter) => console.log(`abuse limit hit, retrying after ${retryAfter}s`),
    onRateLimit: (retryAfter) => console.log(`rate limit hit, retrying after ${retryAfter}s`)
  }
})

// load all your gists, 100 at a time.
octokit.paginate('/gists?per_page=100')
  .then((gists) => {
    // filter out the public gists
    const privateGists = gists.filter(gist => !gist.public)
    console.log(`${privateGists.length} gists found`)

    // delete all private gists
    return Promise.all(privateGists.map(gist => octokit.gists.delete({ gist_id: gist.id }))
  })
  .then(() => {
    console.log('done')
  })

Вместо аутентификации с вашим именем пользователя и паролем, я бы порекомендовал создать токен личного доступа. Обязательно выберите область действия: https://github.com/settings/tokens/new?scopes=gist&description=deleting%20private%20gists

Затем передайте токен в опцию auth конструктора вместо имени пользователя и пароля.

const octokit = new Octokit({
  auth: 'token <your token here>',
  throttle: {
    onAbuseLimit: (retryAfter) => console.log(`abuse limit hit, retrying after ${retryAfter}s`),
    onRateLimit: (retryAfter) => console.log(`rate limit hit, retrying after ${retryAfter}s`)
  }
})
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...