#javascript #fetch-api
Вопрос:
Я пытаюсь использовать API с авторизацией токенов.
В их документации говорится::
Каждый запрос должен содержать заголовок авторизации с учетными данными api, как это: Authorization: Token token="abc123", email="reseller@example.com"
Я не уверен, как именно мне нужно установить свои заголовки, я пробовал это
try {
const res = await fetch("https://pokamax.com/apis/reseller/v1/orders", {
method: "get",
headers: new Headers({
Authorization: 'Token token="mytoken", email="my@email.com',
// Authorization: "Bearer mytoken"
})
});
console.log("Res", res);
} catch (error) {
console.error("Error", error);
}
Но это не сработает. Как мне нужно настроить заголовки?
Комментарии:
1. Почему заголовок авторизации должен содержать электронное письмо? Какой API вы используете? Если это что-то разработанное вами, код был бы полезен
2. @PabloCordero Не мой API. Вот некоторые документы: pokamax.com/docs/Reseller-Api-Documentation-V1-EN.pdf но они мне не совсем понятны и больше ничего не могут найти
3. Какой код статуса вы получаете?
4. @PabloCordero я получаю только
Failed to fetch
, без кода статуса5. В вашем коде есть опечатка:
'Token token="mytoken", email="my@email.com'
->'Token token="mytoken", email="my@email.com"'
Ответ №1:
Я не уверен на 100%, потому что не могу прочитать исходные документы, но большинство заголовков будут соответствовать формату, аналогичному:
headers: new Headers({
Authorization: {
'Token': 'token="mytoken", email="my@email.com''
}
})
Попробуй, может быть, это сработает.
Комментарии:
1. К сожалению, это тоже не работает, хотя спасибо за помощь
Ответ №2:
В соответствии с [1] Заголовок авторизации должен иметь следующую структуру:
Authorization: <type> <credentials>
Token
и email
не разрешены типы в этом заголовке, как указано в MDN [2]. Я думаю, что документы API не дают достаточной информации об этом. Я думаю, что электронное письмо может быть отдельным пользовательским заголовком. Я не уверен, что это сработает, так как я не знаю, как работает API, но проверьте, работает ли это:
try {
const res = await fetch("https://pokamax.com/apis/reseller/v1/orders", {
method: "get",
headers: new Headers({
Authorization: 'Bearer mytoken',
email: 'my@email.com'
})
});
console.log("Res", res);
} catch (error) {
console.error("Error", error);
}
[1] — https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Authorization
[2] — https://developer.mozilla.org/en-US/docs/Web/HTTP/Authentication#authentication_schemes