我已经设法从用户那里授予访问权限,从而根据需要获取access_token
,以便从Angellist API检索数据。
下一步是获取用户数据。正如我们可以从 Angellist API 中读取的那样,您可以通过经过身份验证的 HTTPS GET 请求来执行此操作:
使用令牌
必须发出任何需要身份验证的请求使用 HTTPS,以及 HTTP 授权中提供的访问令牌标头、请求正文或查询字符串。天使列表仅支持持有者令牌,如 中定义https://datatracker.ietf.org/doc/html/draft-ietf-oauth-v2-bearer-08。一个例子使用查询字符串:
GET https://api.angel.co/1/me?
access_token=...
为了在 NodeJS 中发出请求,我使用 npm 包请求,如下所示:
function testRequest(access_token) {
console.log('test request');
var urltest = "https://api.angel.co/1/me?access_token=" + access_token;
request.get(urltest,
{
'auth': {
'bearer': access_token
}
},
function (error, response, body) {
if (!error && response.statusCode == 200) {
console.log('body', body)
}
console.log('body', body)
console.log('error', error)
}
);
};
但是,我不断收到错误:
body {"success":false,"error":{"type":"unauthorized","message":"The authenticated user is not authorized for this request."}}
我做错了什么?access_token是否需要转换或其他东西,即它不是持有者令牌?
您可以尝试按如下方式发送请求吗:
var optionsGetUserInfo = {
method: 'GET',
url: "https://api.angel.co/1/me?access_token=" + access_token",
headers: {
'Authorization': 'Bearer ' + access_token
'Accept' : 'application/json',
'Content-Type' : 'application/json'
}
}
request(optionsGetUserInfo, function (error, response, body) {
if (!error && response.statusCode == 200) {
etc...
我发现,当尝试使用另一个 AngelList 帐户登录时,它可以工作。我之前尝试的帐户与我注册客户端应用程序的帐户相同。不知道为什么这会有所作为,但它有效。