Пожалуйста, потерпите меня, я новичок в API. Поэтому я работаю над небольшим проектом, в котором мне нужно разработать конечную точку, которая принимает запрос по почте. Запрос поступает из внешнего домена с заголовками авторизации Oauth1.0. Запрос также имеет тело xml.
Поэтому я пытаюсь установить res.headers в соответствие с req.headers и ключом oauth_signature. Однако я даже не уверен, что это правильный способ аутентификации.
Кроме того, без авторизации тело запроса становится пустым объектом. Это правильное поведение? Требуется ли сначала авторизация, чтобы получить доступ к request.body?
Вот пример тела запроса и заголовка.
{
"headers" : {
"Content-Type" : "application/xml",
"Authorization" : "OAuth realm=\"\",oauth_version=\"1.0\",oauth_nonce=\"f8b4e8d94c9b3016633851df203faf7b\",oauth_timestamp=\"1580862430\",oauth_consumer_key=\"somekey\",oauth_body_hash=\"somekey\",oauth_signature_method=\"HMAC-SHA1\",oauth_signature=\"somekey\""
},
"body" : "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\"
}
Вот мой текущий код.
const OAuthS = require('oauth-signature')
app.use('/results', function(req, res) {
const now = new Date()
let url = 'https://example.com'
let parameters = {
"oauth_consumer_key" : 'somekey',
"oauth_nonce" : 'somekey',
"oauth_timestamp" : Math.round(now.getTime() / 1000),
"oauth_body_hash": "somekey,
"oauth_signature_method" : 'HMAC-SHA1',
"oauth_version" : '1.0',
}
let consumer_secret = "somekey"
let OS = OAuthS.generate('POST', url, parameters, consumer_secret )
res.setHeader(
"Content-Type" , "application/xml"
)
res.setHeader(
"Authorization", "OAuth realm='',oauth_version='1.0',oauth_nonce='somekey',oauth_timestamp='somekey',oauth_consumer_key='somekey',oauth_body_hash='somekey',oauth_signature_method='HMAC-SHA1',oauth_signature=" + `\'${OS}\'`
)
let body = req.body
console.log(body)
});