Заголовок запроса для авторизации токена электронной почты

#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