我正在开发一个使用jwt tokens
访问我的后端API的React Native应用。我正在尝试将令牌保存在AsyncStorage
中,但是好像我没有正确使用async
。
我有一个实用程序可以帮助我设置fetch
选项,这是我试图从jwt token
抓取AsyncStorage
的地方,但是我一直无法使用正确async
以获取令牌。我要么得到一个看起来像未解决的承诺,要么得到一个错误,告诉我我使用的await
不正确。
我可以在我的jwt token
实用程序中使用一些帮助来正确读取我的fetch
。
这是我的实用程序的样子:
import { getAccessToken } from '../utils/my-utils';
export const fetchOptionsGet = async () => {
getAccessToken().then(token => {
return {
method: 'GET',
mode: 'cors',
headers: {
"Content-Type": "application/json",
"Authorization": "Bearer " + token
}
};
});
}
这是getAccessToken()
函数的代码:
import { AsyncStorage } from "react-native";
export const getAccessToken = async () => {
const accessToken = await AsyncStorage.getItem("access_token");
return accessToken;
};
我认为问题在于,因为我正在从async
函数调用fetchOptionsGet()
函数,所以它也变成了async
函数。在我的API方法中,当我尝试使用await
关键字调用它时,出现编译错误。如果将对API的fetch
调用包装在.then(token => { // API call here })
中,则会收到一个react-redux
错误,告诉我函数应该返回一个简单对象。
读取jwt token
并将其用于fetch
通话中的正确方法是什么?
答案 0 :(得分:0)
export const fetchOptionsGet = async () => {
const token = await getAccessToken();
return {
method: 'GET',
mode: 'cors',
headers: {
"Content-Type": "application/json",
"Authorization": "Bearer " + token
}
}
await
等待承诺解决。然后,您可以退回任何需要退回的物品。
答案 1 :(得分:0)
export const fetchOptionsGet = async () => {
const accessToken = await AsyncStorage.getItem("access_token");
return {
method: 'GET',
mode: 'cors',
headers: {
"Content-Type": "application/json",
"Authorization": "Bearer " + accessToken
}
};