来自 AngelList API 的简单 HTTPS GET,带有 NodeJS 和 Request



我已经设法从用户那里授予访问权限,从而根据需要获取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 帐户登录时,它可以工作。我之前尝试的帐户与我注册客户端应用程序的帐户相同。不知道为什么这会有所作为,但它有效。

最新更新