user12314098
user12314098

Reputation:

React Native - Sending token to Django server

So I have this react native code that sends a token in string format, yes I've checked that var token = getAccessToken() is a string and I've console.log it to ensure it is a JWT token as well. But on the Django side when I check request.headers.get('Authorization', None) it outputs: 'Bearer [object Object]' what's going on?

React Native Code

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));
      });
  } 

I also tried

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

I also tried

  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));
    });;
  };

and console.log(token) is outputting "undefined"

Upvotes: 0

Views: 210

Answers (1)

Adithya
Adithya

Reputation: 1728

Update getAccessToken to return result of Auth .currentSession()

And

Make getPosts function async and await getAccessToken(). OR Use the then block to result of promise

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

Otherwise what you are getting is a promise that's not resolved yet.

Upvotes: 1

Related Questions