Github api 401 неверные учетные данные в узле, но не завиток

Я пытаюсь пройти аутентификацию на Enterprise GitHub с помощью @octokit/rest. Если я использую следующий Curl, я получаю список URL-адресов API:

curl -u "my@email.com" https://api.github.<my domain>.com

когда я запускаю его, мне предлагается ввести пароль, в который я ввожу свой личный токен доступа.

Однако, если я использую те же данные в своем приложении узла, я получаю ответ 401 Bad Credentials. Вот как я настраиваю свою аутентификацию:

octokit.authenticate({
  baseUrl: 'https://api.github.<my domain>.com', 
  type: 'basic',
  username: 'my@email.com',
  password: '<my personal access token>'
});

Основываясь на документации, я считаю, что это должно сработать. Кто-нибудь может посоветовать, почему этого не происходит?

Это полный ответ HTTP, который я получаю:

{ HttpError: {"message":"Bad credentials","documentation_url":"https://developer.github.com/v3"}
    at response.text.then.message (/node_modules/@octokit/rest/lib/request/request.js:72:19)
    at <anonymous>
    at process._tickCallback (internal/process/next_tick.js:188:7)
  name: 'HttpError',
  code: 401,
  status: undefined,
  headers: 
   { 'access-control-allow-origin': '*',
     'access-control-expose-headers': 'ETag, Link, Retry-After, X-GitHub-OTP, X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset, X-OAuth-Scopes, X-Accepted-OAuth-Scopes, X-Poll-Interval',
     connection: 'close',
     'content-length': '83',
     'content-security-policy': 'default-src \'none\'',
     'content-type': 'application/json; charset=utf-8',
     date: 'Mon, 10 Sep 2018 13:20:12 GMT',
     'referrer-policy': 'origin-when-cross-origin, strict-origin-when-cross-origin',
     server: 'GitHub.com',
     status: '401 Unauthorized',
     'strict-transport-security': 'max-age=31536000; includeSubdomains; preload',
     'x-content-type-options': 'nosniff',
     'x-frame-options': 'deny',
     'x-github-media-type': 'github.v3; format=json',
     'x-github-request-id': 'C8BA:76CE:24B2BB3:45F82A2:5B966F8B',
     'x-ratelimit-limit': '10',
     'x-ratelimit-remaining': '9',
     'x-ratelimit-reset': '1536585672',
     'x-runtime-rack': '0.039959',
     'x-xss-protection': '1; mode=block' } }

Дополнительная информация

Кажется, здесь возникает моя проблема:

let response = await method({
    q: "repo:" + repoOrg + "/" + repoName + " is:issue",
    per_page: 100
  });

Это похоже на пример на странице npm. Возможно ли, что аутентификация не применима к этому, и если да, то как мне убедиться, что она применяется?

Вы пробовали использовать свой пароль вместо токена?

Gabriel Bleu 10.09.2018 10:26

да. Выдает ту же ошибку.

runnerpaul 10.09.2018 10:28
0
2
2 376
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Для аутентификации с помощью токена вы должны установить тип аутентификации token и генерировать токен

username принимает и электронную почту, и имя пользователя

Полный рабочий пример:

const octokit = require('@octokit/rest')();

octokit.authenticate({
  type: 'token',
  username: 'my username',
  token: 'my token'
});

octokit.activity.getStarredRepos().then(results => {
  console.log(results);
});

Танск @ Габриэль Блю. Я пробовал это, но все равно получаю ошибку. Я добавил полный ответ на свой вопрос.

runnerpaul 10.09.2018 15:23

Кстати, я пытаюсь сделать это в Enterprise GitHub. Я думал, что могут быть некоторые проблемы с безопасностью, но, поскольку мне удалось задействовать API с помощью Curl, я предполагаю, что он должен работать с Node.

runnerpaul 10.09.2018 21:24
Ответ принят как подходящий

Метод .authenticate не принимает параметр baseUrl. Вы должны добавить его в конструктор Octokit, см. https://github.com/octokit/rest.js#client-options

Вот пример из моего кода:

const octokit = require('@octokit/rest')({
  baseUrl: 'https://api.github.<my domain>.com'
})
octokit.authenticate({
  type: 'basic',
  username: 'my@email.com',
  password: '<my personal access token>'
});

Другие вопросы по теме