Я изучаю узел и переношу свой текущий API из Python. Я пытаюсь создать токен jwt для аутентификации в стороннем API, однако моя функция возвращает undefined
. Метод jwt, который я использую для подписи токена, async
, поэтому я предполагаю, что моя функция не ждет, пока jwt вернет токен.
Это моя функция подписать и создать токен jwt:
function token() {
const payload = {
iat: Math.floor(new Date() / 1000),
exp: Math.floor(new Date() / 1000) + 30,
sub: "api_key_jwt",
iss: "external",
jti: crypto.randomBytes(6).toString("hex")
};
return jwt.sign(payload, privatekey, { algorithm: "RS256" }, function(
err,
token2
) {
return token2;
});
}
Итак, когда я это называю:
exports.genToken = function() {
const header = {
"x-api-key": api
};
const data = {
kid: api,
jwt_token: token()
};
async function authorization(req, res) {
try {
const auth = await rp({
url: authurl,
method: "POST",
headers: header,
body: data
});
res.send(auth.body);
} catch (error) {
res.send(404).send();
}
}
return {
"x-api-key": api,
Authorization: "Bearer " + authorization()
};
};
jwt_token
возвращает undefined
. Что я делаю не так, и как я могу это исправить?
Заранее спасибо, ребята!
Редактировать: console.log(token2)
возвращает подписанный токен. Таким образом, проблема заключается в возврате токена из функции token()