API请求未通过身份验证

时间:2019-11-27 15:20:22

标签: rest http get postman http-get

我使用this documentation尝试使用Postman右侧示例测试请求:

let express = require('express');
let app = express();

let {google} = require('googleapis');
const calendar = google.calendar('v3');

const port = 3000;
const key = require('./credentials.json');

const jwtClient = new google.auth.JWT(
    key.client_email,
    null,
    key.private_key,
    [ 'https://www.googleapis.com/auth/calendar' ],
    null
);

jwtClient.authorize(function(err) {
    if (!err) {
        console.log("Authorization worked!");
    }
});

const calendarID = 'XXXXX@resource.calendar.google.com';

app.get('/', function(req, res) {
    calendar.events.list({
        auth: jwtClient,
        calendarId: calendarID,
        timeMin: (new Date()).toISOString(),
        maxResults: 2,
        singleEvents: true,
        orderBy: 'startTime'
    }, function(err, resp) {
        res.json(resp);
    });

});

app.listen(port, function(err){
    if (!err) {
        console.log("XXXXX is running on port", port);
    } else {
        console.log(JSON.stringify(err));
    }
});

也许我没有正确设置参数,但这就是现在的样子。

一个新的GET请求,在URL输入中:$ curl https://subscriptions.zoho.com/api/v1/organizations -H 'Authorization: Zoho-oauthtoken 1000.41d9f2cfbd1b7a8f9e314b7aff7bc2d1.8fcc9810810a216793f385b9dd6e125f' -H 'X-com-zoho-subscriptions-organizationid: 10234695' 在此之下,在“标题”标签中,我添加了两个键值对:

https://subscriptions.zoho.com/api/v1/organizations Authorization: Zoho-oauthtoken 1000.41d9f2cfbd1b7a8f9e314b7aff7bc2d1.8fcc9810810a216793f385b9dd6e125f Authorization:

返回的结果:

X-com-zoho-subscriptions-organizationid: 1023469

如果我删除了第二个键值对,它将返回以下JSON:

<html>
<head><title>400 Bad Request</title></head>
<body>
<center><h1>400 Bad Request</h1></center>
</body>
</html>

我的方法有什么问题?

1 个答案:

答案 0 :(得分:0)

你可以试试吗?

如果您确定api网址,请验证令牌并创建一个新令牌,然后 如下所示将其添加到标题:

HeaderName:授权

HeaderValue: 1000.41d9f2cfbd1b7a8f9e314b7aff7bc2d1.8fcc9810810a216793f385b9dd6e125f

HeaderName: X-com-zoho-subscriptions-organizationid

HeaderValue: 10234695

我尝试了这个,并且得到了,

{
"code": 14,
"message": "Invalid value passed for authtoken."
}

可能是令牌无效。

现在,我尝试使用自己生成的新令牌,现在就可以使用

{
"code": 0,
"message": "success",
"organizations": [],
}

Scrrenshot tried through AdvancedRESTClient, just another Postman

简而言之,您必须先生成一个auth令牌,然后使用正确的标头值访问该url,如上所示。

谢谢:)