使用@octokit 对 Github 应用程序进行身份验证
Authentication of a Github App with @octokit
我使用 @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 credentials = { type: 'oauth', token: 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"}
在使用 octokit.checks.create()
之前,您需要生成一个 "installation token",您可以通过将 JWT 传递到此端点来完成此操作:https://api.github.com/app/installations/:installation_id/access_tokens
octokit/rest.js 有一个函数可以用来做到这一点:http://octokit.github.io/rest.js/#api-Apps-createInstallationToken
Learn more about authenticating with GitHub Apps
您可能还对 Probot 感兴趣,这是一个 JavaScript 框架,它大大简化了 GitHub 应用程序身份验证,并且对于与 Checks 交互应该特别有用 API!
希望对您有所帮助:)
我使用 @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 credentials = { type: 'oauth', token: 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"}
在使用 octokit.checks.create()
之前,您需要生成一个 "installation token",您可以通过将 JWT 传递到此端点来完成此操作:https://api.github.com/app/installations/:installation_id/access_tokens
octokit/rest.js 有一个函数可以用来做到这一点:http://octokit.github.io/rest.js/#api-Apps-createInstallationToken
Learn more about authenticating with GitHub Apps
您可能还对 Probot 感兴趣,这是一个 JavaScript 框架,它大大简化了 GitHub 应用程序身份验证,并且对于与 Checks 交互应该特别有用 API!
希望对您有所帮助:)