В настоящее время я работаю над простым сервисом, написанным на nodejs для RocketChat. Но модуль 'request' не отправляет мои параметры заголовка для аутентификации. Вот подробности:
//Login
request({
url: rocketChatURL + '/api/v1/login',
method: 'POST',
body: JSON.stringify({
'user': rocketChatUser,
'password': rocketChatPass
})
}, (err, res, body) => {
if (err) { return console.log(err); }
console.log(body);
obj = JSON.parse(body);
console.log(obj);
rocketChatAuthToken = JSON.stringify(obj.data.authToken);
});
//Channel Infos
var options = {
url: rocketChatURL + '/api/v1/channels.info?roomName=' + rocketChatRoom,
method: 'GET',
//json: true,
headers: {
"X-User-Id": rocketChatUserID,
"X-Auth-Token": rocketChatAuthToken,
}
};
Логин возвращает следующий объект:
{ status: 'success',
data:
{ userId: 'XYZ',
authToken: 'JS_VNjOnFpicTIdhD4n1WOdvl950wOEa-LDDACqg_yN',
me:
{ _id: 'XYZ',
name: 'myTechuser',
emails: [Array],
status: 'online',
statusConnection: 'online',
username: 'myTechuser',
utcOffset: 2,
active: true,
roles: [Array],
settings: [Object],
email: 'xxx@yyy.com'
}
}
}
Прежде всего, это логин. После этого я хочу получить информацию о канале. Следовательно, UserID и AuthToken должны быть предоставлены через заголовок (см. https://rocket.chat/docs/developer-guides/rest-api/channels/info/).. Ответом всегда является HTTP 401 с сообщением об ошибке «Вы должны войти в систему, чтобы сделать это».
После некоторого исследования 'request-debug' я увидел, что модуль запроса просто отправляет заголовок "X-User-Id", но не "X-Auth-Token" (см. Фрагмент ниже).
Это причина, почему аутентификация не проходит. Потому что, если я отправляю запрос вручную через CURL (и, конечно, с параметрами заголовка), аутентификация работает хорошо.
Не могли бы вы объяснить, почему модуль запроса не отправляет второй вариант заголовка с запросом?
{ request:
{ debugId: 3,
uri:
'https://chat.xxxxx.com/api/v1/channels.info?roomName=myRoom',
method: 'GET',
headers:
{ 'X-User-Id': 'XYZ',
host: 'chat.xxxxx.com' } } }
{ response:
{ debugId: 3,
headers:
{ date: 'Mon, 29 Apr 2019 19:02:03 GMT',
'content-type': 'application/json',
'transfer-encoding': 'chunked',
connection: 'close',
server: 'nginx/1.13.12',
'x-instance-id': 'g47SaWLkqdM2ZrhQ8',
'access-control-allow-origin': '*',
'cache-control': 'no-store',
pragma: 'no-cache',
vary: 'Accept-Encoding',
'set-cookie': [Array],
'strict-transport-security': 'max-age=31536000; includeSubDomains' },
statusCode: 401,
body:
'{"status":"error","message":"You must be logged in to do this."}' } }