2017-05-19 171 views
1

我想做一个简单的api GET请求来获取基于帐户名/用户名的用户电子邮件。 我使用的是axios,当我使用这个https://api.github.com/users/[username] 进行GET请求时,我找回了我需要的一切(存储库,关注者...),除了用户电子邮件。它始终为空。对于我来说,仅仅获取来自用户的电子邮件就足以让他们在其个人资料中将其设置为公共,但无论它设置了什么,它都将始终返回空值。我正在阅读,也许我需要授权。我在我的github帐户上创建了个人访问令牌,但我将如何使用它?什么是获得用户电子邮件的最佳方式?Github Api,获取用户电子邮件

这就是我现在

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 
    }) 
    } 
} 

回答

1

好。我设法得到这样的工作。我简单地发送一个包含personalAccessToken和请求的头文件。您可以在设置/个人访问令牌/生成新令牌并选择用户:电子邮件作为范围下的github页面上获得个人访问令牌。现在使用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 
    }) 
    } 
} 
+0

有趣的选择。 +1 – VonC

0

你可以看一下在Requestable.js对象从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); 
    } 
+0

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

相关问题