Аутентификация приложения Github с помощью @octokit - PullRequest
0 голосов
/ 24 августа 2018

Я использую @octokit/rest для доступа к github и пытаюсь пройти аутентификацию с помощью функции authenticate().

const credentials = { type: 'oauth', key: process.env.GITHUB_ID, secret: process.env.GITHUB_SECRET }
octokit.authenticate(credentials)

У меня есть учетные данные на странице настроек моего приложения github (учетные данные OAuth, внизу страницы), и я проверил их правильность в среде процесса.

https://www.npmjs.com/package/@octokit/rest#authentication говорит, что аутентификация является синхронной, поскольку она устанавливает учетные данные только для следующих запросов, поэтому я не использую await здесь.

Кажется, это работает, по крайней мере, не выдает никаких ошибок.

Мой код для создания чека:

octokit.checks.create({...})

Но при запуске этого кода я получаю ошибку

{ HttpError: {"message":"You must authenticate via a GitHub App.","documentation_url":"https://developer.github.com/v3/checks/runs/#create-a-check-run "}
  at response.text.then.message (/usr/app/node_modules/@octokit/rest/lib/request/request.js:72:19)
  at process._tickCallback (internal/process/next_tick.js:68:7)

- Если я вместо этого сгенерирую токен JWT и аутентифицируюсь так: учетные данные const = {тип: 'oauth', токен: process.env.GITHUB_TOKEN}

с JWT как eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ9.eyJpYXQiOjE1MzUxMTEwNzcsImV4cCI6MTUzNTExMTY3NywiaXNzIjoiSXYxLjAwNjhkZjdkYzRmNjNkMGIifQ.KHb1V3Fh6WKLAlcZkQPntVehvl1frp3rdBT9-lOTJRzAx8JxGyxpEUnOdwbNU3gmx_G1Fu3E3QEbcCWs0L743HkJ4B53JQpni1cQ1YZ25e0HH3OO6HW4WycaYbgGPcZRZCDe0vocwaxKjHq16uG7jsfVLC4lR94GVxJQhu-w9WX9BVxE3x_yqKdMhFYhKvez8oBpAXRZFQbKtw2rb8TXHV3-PKXTRCfO_fR_Omr7J3Mw26yHdnoRK1pA7BS5O1P0UAFmWshLted2UbE0S8SU0ZoUnZE0QA3wW-o4Q4-6oEGCK9UWLnnHAfn11Ow7rKulSUyCvZgKV8niGSL7R97nWg

Я получаю следующий ответ:

{"message":"Bad credentials","documentation_url":"https://developer.github.com/v3"}

1 Ответ

0 голосов
/ 26 августа 2018

Перед использованием octokit.checks.create() вам необходимо сгенерировать «токен установки», который вы можете сделать, передав свой JWT этой конечной точке: https://api.github.com/app/installations/:installation_id/access_tokens

octokit / rest.js имеет функцию, которую вы можетеиспользуйте для этого: http://octokit.github.io/rest.js/#api-Apps-createInstallationToken

Узнайте больше об аутентификации с помощью GitHub Apps

Вас также может заинтересовать Probot , который являетсяФреймворк JavaScript, который значительно упрощает аутентификацию GitHub App и должен быть особенно полезен для взаимодействия с API проверок!

Надеюсь, это поможет:)

...