Не удалось передать access_token в конечную точку в Reactjs

Я пытаюсь получить данные из API, для которого требуется access_token. Есть еще один API для получения access_token. Итак, я сначала пытаюсь получить acess_token, а затем передать его API, который возвращает данные.

Я заметил, что API-интерфейс токена подвергается атаке, но к тому времени, когда он передается в API данных, токен undefined

Пожалуйста, предложите, как сначала получить access_token, а затем передать его в data_api.

Не могли бы вы сказать мне, что вам нужна одинаковая логика для всех API или только для одного API, если вам нужно передать все API, чтобы вы могли создавать собственные перехватчики для вызова каждый раз перед вызовом API.

sedhal 23.12.2020 11:27

@sedhalsoni, ты имеешь в виду, что мне нужно писать отдельную выборку перед каждым вызовом API и отдельные перехватчики?

Mahesh 23.12.2020 11:29

Да, если вам нужно каждый раз получать токен доступа, или второй вариант — получить токен доступа на начальном уровне, установить его в локальном хранилище и передавать при каждом вызове API.

sedhal 23.12.2020 11:37

@sedhalsoni Я попробовал ваш способ, теперь токен и api_headers печатаются в консоли, но получают 401 error, поэтому я зарегистрировался response headers под Network, заметил, что auth headers is not getting injected и, следовательно, получил 401unauthorized error. Вот код slack-files.com/T04MYU6C6-F01J7LJH6KA-7e54b04fa6. Не могли бы вы предложить исправление для этого, так как это может быть последний шаг для получения окончательного результата. Спасибо!

Mahesh 23.12.2020 14:10
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Навигация по приложениям React: Исчерпывающее руководство по React Router
Навигация по приложениям React: Исчерпывающее руководство по React Router
React Router стала незаменимой библиотекой для создания одностраничных приложений с навигацией в React. В этой статье блога мы подробно рассмотрим...
Массив зависимостей в React
Массив зависимостей в React
Все о массиве Dependency и его связи с useEffect.
0
4
161
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий
const useFetch = (url,headers)=>{

    const [status, setStatus] = useState('idle');
    const [data, setData] = useState([]);
    const [loading, setLoading] = useState(true)
    useEffect(() => {
        
        const fetchData = async () => {
            setStatus('fetching');
            const response = await fetch(
                url,headers
            );
            const data = await response.json();
            setData(data)
            setLoading(false)
            setStatus('fetched');
        };
    
        fetchData();
    }, [url,headers,setStatus,setData,setLoading]);
    return { data,loading }
}

Эй, я попробовал этот код. но все же токен приходит как неопределенный. Непонятно где не так :(

Mahesh 23.12.2020 11:40

мой плохой, я думаю, что я должен использовать status также правильно, чтобы проверить, простаивает он или нет?

Mahesh 23.12.2020 11:41

не могли бы вы помочь мне здесь, я немного запутался

Mahesh 23.12.2020 11:45

Да, я пробовал только это, но получаю token как undefined

Mahesh 23.12.2020 12:05

Вы использовали useFetch дважды. И API_headers нельзя использовать, когда первый ответ useFetch еще не пришел

Mahdi zoraghi 23.12.2020 12:09

Вы используете useFetch дважды одновременно

Mahdi zoraghi 23.12.2020 12:11

Хорошо, в таком случае мне нужно сделать копию useFecth и вызывать ее для получения api_data?

Mahesh 23.12.2020 12:11

Да. К сожалению, у меня нет вашего полного кода, чтобы точно сказать вам, что делать.

Mahdi zoraghi 23.12.2020 12:14

Эй, я создал реплику под названием useFetch2. Я использовал useFecth для токена и useFetch2 для вызова API данных, но токен все еще не передается (не определено). slack-files.com/T04MYU6C6-F01HHSATB35-c70717be24 вот полный код. не могли бы вы проверить один раз, если я сделал что-то не так?

Mahesh 23.12.2020 12:22

Ты проделал очень хорошую работу, мой друг. Я увидел ваш код и решил проблему. Посмотрите внимательно на этот код. github.com/mahdi-zoraghi/fix-problem-stackoverflow/blob/main‌​/…

Mahdi zoraghi 23.12.2020 14:14

эй, заменил код, получаю эту ошибку Unhandled Rejection (Error): Rendered more hooks than during the previous render.i.imgur.com/9Wj5n57.png Не знаю, что это значит

Mahesh 23.12.2020 14:21

и кстати, если вы не возражаете, я попробовал по-другому. теперь токен и api_headers печатаются в консоли, но получают 401 error, поэтому я проверил заголовки ответа в Network и заметил, что auth headers is not getting injected и, следовательно, получил 401 unauthorized error. Вот код slack-files.com/T04MYU6C6-F01J7LJH6KA-7e54b04fa6. Не могли бы вы предложить исправление для этого, так как это может быть последний шаг для получения окончательного результата. Спасибо!

Mahesh 23.12.2020 14:24

хорошо. видеть это . github.com/mahdi-zoraghi/fix-problem-stackoverflow2/blob/mai‌​n/…

Mahdi zoraghi 23.12.2020 15:17

Вы можете присоединиться к этому чату SFO, пожалуйста? продолжить обсуждение в чате.

Mahesh 23.12.2020 15:29

Другие вопросы по теме