0
votes

Réagir comme natif à l'aide d'Axios ne peut pas obtenir un jeton au porteur

J'ai une demande d'API utilisant Axios provenant de mon serveur de backend. Je souhaite enregistrer le jeton au porteur au stockage de périphérique ou au stockage local. Mais quand je fais console.log code> pour le jeton au porteur, il semble ne pas fonctionner car ce que je reçois est quelque chose comme une promesse.

Voici ma méthode p>

Loading...

Promise {
  "_40": 0,
  "_55": null,
  "_65": 0,
  "_72": null,
}

Loading Finished


0 commentaires

3 Réponses :


1
votes

Vous pouvez utiliser async / attendre code> avec essayer / attraper code> ce qui le rend plus lisible. En outre, vous aurez besoin de attendre code> la demande de asyncstorage code> car il renvoie une promesse.

import { AsyncStorage, Alert } from "react-native";
export default async function login(email, password, setLoading) {
  console.log("Loading...");
  setLoading(true);
  const url = "http://52.74.70.6/api/auth/login";
  const data = {
    email: email,
    password: password,
  };
  const headers = {
    Accept: "application/json",
    "Content-Type": "application/json",
  };
  try {
    const response = await axios.post(url, data, { headers: headers });
    setLoading(false);
    await AsyncStorage.setItem("bearer_token", res.data.bearer_token);
    console.log(await AsyncStorage.getItem("bearer_token"));
    console.log("Loading Finished");
  } catch (err) {
    setLoading(false);
    console.log(err);
    AlertErr();
  }
}


2 commentaires

Merci pour ça. C'est celui que j'ai actuellement suivi. Comment utiliser le jeton au porteur dans toute ma demande lorsque j'ai fini de vous connecter?


Eh bien, vous pouvez ajouter autorisation dans vos en-têtes comme ceci {en-têtes: {"Autorisation": `Bearer $ {jeton}}}} , Token = Await Asyncstorage.getem ("Bearer_Token") . Merci pour le vote @vince.



1
votes

Puisque c'est "ASYNC" Avez-vous essayé d'ajouter attendre code> avant de

then((res)=>{
        setLoading(false)
        await AsyncStorage.setItem('bearer_token', res.data.bearer_token);
        return AsyncStorage.getItem('bearer_token')
    })
.then(token => console.log('token', token)


0 commentaires

1
votes

Comme son nom l'indique, ASYNCStorage est asynchrone. Les deux établissent un élément et la lecture d'un article d'ASYNCStorage sont asynchrones, vous ne pouvez donc pas lire immédiatement les résultats de votre insuion. Accouplement au Docs , afin de vous connecter, vous pouvez

AsyncStorage.setItem('bearer_token', res.data.bearer_token).then(() => {
    AsyncStorage.getItem('bearer_token').then(console.log)
});


0 commentaires