#javascript #api #axios #apisauce
#javascript #API #axios #apisauce
Вопрос:
Пожалуйста, помогите проверить, не использовал ли я метод для передачи токена авторизации на предъявителя, потому что он не работает, может быть, я что-то упустил, пожалуйста
apiClient.addAsyncRequestTransform(async (request) => {
const authToken = await authStorage.getToken();
if (!authToken) return;
request.headers["Authorization"] = "access " authToken;
});
Ответ №1:
Токен на предъявителя обычно начинается с фразы bearer
. Итак, замените слово access
на bearer
и повторите попытку:
apiClient.addAsyncRequestTransform(request => async () => {
const authToken = await authStorage.getToken();
if (!authToken) return;
request.headers["Authorization"] = "Bearer " authToken;
});
Комментарии:
1. Все та же проблема… что вы думаете, пожалуйста
2. Можете ли вы упомянуть документацию API, которую вы используете?
3. API Sauce, я протестировал его с Postman, и он работает, когда я помещаю токен в опцию bearer на вкладке authorization… Но в моем приложении, при проверке api с помощью React native debugger, он продолжает указывать 401 несанкционированный
4. Можете ли вы добавить скриншот запроса Postman?
5. Пожалуйста, проверьте, только что добавил его
Ответ №2:
Вот мой полный код:
import apisauce from 'apisauce';
import { Constants } from '../utils/Constants';
import LocalStorage from '../Service/LocalStorage'
let local = new LocalStorage()
export const createBackendServer = (baseURL = Constants.BASE_URL) =>
{
const api = apisauce.create({
baseURL,
timeout: 30 * 1000,
});
api.setHeaders({
Accept: 'application/json',
'Content-Type': 'application/json',
})
api.addAsyncRequestTransform(request => async () => {
await local.getSession((res) => {
if (res.token) {
request.headers["Authorization"] = "Bearer " res.token;
}
})
});
const signUpUser = (body) => api.post('/signup', body);
const signInWithEmailPassword = (body) => api.post('/login', body);
const signOut = () => api.get('/logout');
return {
signUpUser,
signInWithEmailPassword,
signOut
};
};