React Native — Отправка токена на сервер Django

#django #react-native

Вопрос:

Итак, у меня есть этот собственный код react, который отправляет токен в строковом формате, да, я проверил, что var token = getAccessToken() это строка, и я получил консоль.зарегистрируйте его, чтобы убедиться, что это также токен JWT. Но на стороне Джанго, когда я проверяю request.headers.get('Authorization', None) его выходы: 'Bearer [object Object]' что происходит?

Реагировать на Собственный Код

 import {Auth} from 'aws-amplify';

export async function getAccessToken() {
    try {
        const currentUser = await Auth.currentAuthenticatedUser();
        console.log(currentUser);

        Auth
            .currentSession()
            .then(res => {
                let accessToken = res.getAccessToken();
                // let jwt = accessToken.getJwtToken();
                // You can print them to see the full objects
                // console.log(`myAccessToken: ${JSON.stringify(accessToken)}`);
                // console.log(`myJwt: ${JSON.stringify(jwt)}`);
                console.log(accessToken.jwtToken)
                return accessToken.jwtToken
            });
    } catch (error) {
        console.log('error signing up:', error);
    }
}
 const getPosts = () => {
    var token = getAccessToken();

    const config = {
      headers: { Authorization: `Bearer `   token }
    };

    axios
      .get(`${url}/posts`, config)
      .then(response => {
        console.log(response)
        setData(response.data);
      })
      .catch(error => {
        console.log(JSON.stringify(error));
      });
  } 
 

Я тоже пытался

     const config = {
      headers: { Authorization: `Bearer ${token}` }
    };
 

Я тоже пытался

   function getPosts() {
    var token = getAccessToken().then(token => {
      const config = {
        headers: {
          Authorization: `Bearer ${token}`
        }
      };

      console.log(token)

      axios
        .get(`${url}/posts`, config)
        .then(response => {
          console.log(response)
          setData(response.data);
        })
        .catch(error => {
          console.log(JSON.stringify(error));
        });
    }).catch(error => {
      console.log(JSON.stringify(error));
    });;
  };
 

и console.log(token) выводит «неопределенный»

Ответ №1:

Обновление getAccessToken для возврата результата Auth .currentSession()

И

Сделайте getPosts функцию async и ждите getAccessToken() . ИЛИ используйте then блок для выполнения обещания

getAccessToken().then(token=>{ // Call the api },err=>{ // Handle the error }

В противном случае вы получаете обещание, которое еще не решено.

Комментарии:

1. Я обновил свой пост, теперь я получаю «неопределенный»

2. Обновленный. Вы также отсутствуете return по Auth .currentSession()