首页 > 解决方案 > Github API 授权问题

问题描述

我正在尝试使用 Github Api 进行授权请求,并传递用户名和密码。但它不工作,我得到 401 状态码。

文档中有一部分说

To use Basic Authentication with the GitHub API, simply send the username and password associated with the account.

那是我的代码:

this.api
        .post('/user', { username: 'Example', password: '1234' })
        .then(res => resolve(res.data))
        .catch(err => reject(err));

标签: javascriptaxiosauthorizationgithub-api

解决方案


不确定您是否打算使用 Github API 提供的基本身份验证。如果是这种情况,我认为您应该使用 Axiosauth标头:

axios.get('https://example.com', {
  auth: { user: "username", password: "password" }
});

这是 Axios 文档所说的:

  // `auth` 表示应该使用 HTTP 基本身份验证,并提供凭据。
  // 这将设置一个 `Authorization` 标头,覆盖任何现有的
  // 您使用 `headers` 设置的 `Authorization` 自定义标头。
  // 请注意,通过此参数只能配置 HTTP Basic auth。
  // 对于 Bearer 令牌等,请改用 `Authorization` 自定义标头。
  授权:{
    用户名:'janedoe',
    密码:'s00pers3cret'
  },

还有另一种手动设置授权标头的方法,如下所示:

axios.get('https://example.com/', {
 headers: {
   Authorization: 'Basic ' + Base64.encode('username' + ':' + 'password');
 }
})

最后一点是弃用即将到来:

弃用通知:GitHub 将停止对 API 的密码验证。您现在必须使用 API 令牌(例如 OAuth 访问令牌、GitHub 应用安装访问令牌或个人访问令牌)对 GitHub API 进行身份验证,具体取决于您需要对令牌执行的操作。

考虑使用令牌而不是用户名和密码。


推荐阅读