Github Api,获取用户电子邮件

Github Api, fetching user email

我想发出一个简单的 api GET 请求以获取基于帐户 name/username 的用户电子邮件。 我正在使用 axios,当我使用此 https://api.github.com/users/[username] 发出 GET 请求时 我取回了我需要的一切(存储库、关注者……),除了用户电子邮件。它始终为空。对我来说,只要收到用户在其个人资料上将其设置为 public 的电子邮件就足够了,但无论设置什么,它总是 return 为空。我正在阅读,也许我需要授权。我在我的 github 帐户上制作了个人访问令牌,但我该如何使用它?获取用户电子邮件的最佳方式是什么?

这就是我现在拥有的

import axios from 'axios'

const REQUEST = 'https://api.github.com/users/'


module.exports = {
  getData: (accountName) => {
    const encodedAccountName = encodeURIComponent(accountName)
    const requestUrl = `${REQUEST}${encodedAccountName}`

    return axios.get(requestUrl).then((res) => {
      return res
    })
  }
}

你可以看看Requestable.js object from GitHub.js tool

它确实基于令牌定义了 AuthorizationHeader:

  this.__apiBase = apiBase || 'https://api.github.com';
  this.__auth = {
     token: auth.token,
     username: auth.username,
     password: auth.password
  };
  if (auth.token) {
     this.__authorizationHeader = 'token ' + auth.token;
  } else if (auth.username && auth.password) {
     this.__authorizationHeader = 'Basic ' + Base64.encode(auth.username + ':' + auth.password);
  }

好的。我设法让它像这样工作。我只是发送一个带有 personalAccessToken 的 header 和请求。您可以在 github 页面上的 settings/Personal 访问 token/Generate 新令牌下获取个人访问令牌,并选择 user:email 作为范围。现在最好使用 ENV 变量作为访问令牌。

import axios from 'axios'

const REQUEST = 'https://api.github.com/users/'

var config = {
  headers: {'Authorization': 'token 847762643...'}
}

module.exports = {
  getData: (accountName) => {
    const encodedAccountName = encodeURIComponent(accountName)
    const requestUrl = `${REQUEST}${encodedAccountName}`

    return axios.get(requestUrl, config).then(res => {
      return res
    })
  }
}

我能够使用以下代码从 GitHub API 获取用户电子邮件。

https://api.github.com/user/emails?access_token=${token}