Использование Axios GET с заголовком авторизации в приложении React-Native

Я пытаюсь использовать axios для запроса GET с API, для которого требуется заголовок Authorization.

Мой текущий код:

const AuthStr = 'Bearer ' + USER_TOKEN;

где USER_TOKEN — необходимый токен доступа. Эта конкатенация строк может быть проблемой, так как если я отправляю это как AuthStr = 'Bearer 41839y750138-391', следующий запрос GET работает и возвращает данные, которые мне нужны.

axios.get(URL, { 'headers': { 'Authorization': AuthStr } })
  .then((response => {
    console.log(response.data);
  })
  .catch((error) => {
    console.log(error);
  });

Я также безуспешно пытался установить это как глобальный заголовок.


person Ally Haire    schedule 07.01.2017    source источник
comment
что дает console.log('Bearer' + USER_TOKEN)?   -  person Swapnil    schedule 07.01.2017
comment
Это дает Bearer 472397403110 (или любой другой номер токена)   -  person Ally Haire    schedule 07.01.2017
comment
что дает console.log(typeof(USER_TOKEN))?   -  person Swapnil    schedule 07.01.2017
comment
Попробуйте использовать concat. Это рекомендуемый способ конкатенации строк в javascript.   -  person Swapnil    schedule 07.01.2017
comment
Без изменений, используя concat. И typeof возвращает строку   -  person Ally Haire    schedule 07.01.2017
comment
работает: axios.get(URL, {'headers': {'Authorization': 'Bearer 57290850420852' } }).then ...../n Не работает: любая другая версия   -  person Ally Haire    schedule 07.01.2017
comment
Давайте продолжим это обсуждение в чате.   -  person Swapnil    schedule 07.01.2017


Ответы (2)


Для всех, кто наткнется на этот пост и может найти его полезным... На самом деле в моем коде нет ничего плохого. Я совершил ошибку, запросив код доступа типа client_credentials вместо кода доступа пароля (#facepalms). К вашему сведению, я использую urlencoded post, следовательно, использую строку запроса. Итак, для тех, кто может искать какой-то пример кода.. вот мой полный запрос

Большое спасибо @swapnil за попытку помочь мне отладить это.

   const data = {
      grant_type: USER_GRANT_TYPE,
      client_id: CLIENT_ID,
      client_secret: CLIENT_SECRET,
      scope: SCOPE_INT,
      username: DEMO_EMAIL,
      password: DEMO_PASSWORD
    };



  axios.post(TOKEN_URL, Querystring.stringify(data))   
   .then(response => {
      console.log(response.data);
      USER_TOKEN = response.data.access_token;
      console.log('userresponse ' + response.data.access_token); 
    })   
   .catch((error) => {
      console.log('error ' + error);   
   });



const AuthStr = 'Bearer '.concat(USER_TOKEN); 
axios.get(URL, { headers: { Authorization: AuthStr } })
 .then(response => {
     // If request is good...
     console.log(response.data);
  })
 .catch((error) => {
     console.log('error ' + error);
  });
person Ally Haire    schedule 08.01.2017
comment
как передать несколько пользовательских заголовков в axios - person Sahir Saiyed; 07.05.2017
comment
У вас есть пример заголовка, чтобы сделать это с Amplify и Apigateway? :) просто спрашиваю - person pabloRN; 25.05.2020
comment
Благодарю вас! Сделал 50. - person Maseed; 20.01.2021

Не удалось заставить это работать, пока я не поместил авторизацию в одинарные кавычки:

axios.get (URL, { заголовки: { 'Авторизация': AuthStr } })

person Michael Wing    schedule 09.04.2020
comment
Нет, это должно работать и с двойными кавычками... - person G-Unit; 28.03.2021