【问题标题】:Github Api, fetching user emailGithub Api,获取用户电子邮件
【发布时间】:2017-10-20 02:33:18
【问题描述】:

我想发出一个简单的 api GET 请求,以根据帐户名/用户名获取用户电子邮件。 我正在使用 axios,当我使用此 https://api.github.com/users/[username] 发出 GET 请求时 我取回了我需要的一切(存储库、关注者......),除了用户电子邮件。它始终为空。对我来说,仅从在其个人资料中将其设置为公开的用户那里获得电子邮件就足够了,但无论设置为什么,它都将始终返回 null。我正在阅读,也许我需要授权。我在我的 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
    })
  }
}

【问题讨论】:

    标签: api github request axios


    【解决方案1】:

    好的。我设法让它像这样工作。我只是将带有personalAccessToken 的标头与请求一起发送。您可以在 github 页面上的 settings/Personal access token/Generate new token 下获取个人访问令牌,然后选择 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
        })
      }
    }
    

    【讨论】:

    • 有趣的选择。 +1
    【解决方案2】:

    您可以从GitHub.js tool 中查看Requestable.js 对象

    它确实基于令牌定义了 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);
      }
    

    【讨论】:

    • 感谢 VonC。我也会以这种方式进行调查,但现在你可以看到我的答案,我是如何设法让它工作的,尽管 OAuth 会是更好的解决方案。
    【解决方案3】:

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-06-07
      • 1970-01-01
      • 2013-09-05
      • 1970-01-01
      • 1970-01-01
      • 2013-09-24
      • 2011-04-06
      • 1970-01-01
      相关资源
      最近更新 更多