Я пытаюсь получить данные из API, для которого требуется access_token
. Есть еще один API для получения access_token
. Итак, я сначала пытаюсь получить acess_token, а затем передать его API, который возвращает данные.
Я заметил, что API-интерфейс токена подвергается атаке, но к тому времени, когда он передается в API данных, токен undefined
Пожалуйста, предложите, как сначала получить access_token, а затем передать его в data_api.
@sedhalsoni, ты имеешь в виду, что мне нужно писать отдельную выборку перед каждым вызовом API и отдельные перехватчики?
Да, если вам нужно каждый раз получать токен доступа, или второй вариант — получить токен доступа на начальном уровне, установить его в локальном хранилище и передавать при каждом вызове API.
@sedhalsoni Я попробовал ваш способ, теперь токен и api_headers печатаются в консоли, но получают 401 error
, поэтому я зарегистрировался response headers
под Network
, заметил, что auth headers is not getting injected
и, следовательно, получил 401unauthorized error
. Вот код slack-files.com/T04MYU6C6-F01J7LJH6KA-7e54b04fa6. Не могли бы вы предложить исправление для этого, так как это может быть последний шаг для получения окончательного результата. Спасибо!
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 }
}
Эй, я попробовал этот код. но все же токен приходит как неопределенный. Непонятно где не так :(
мой плохой, я думаю, что я должен использовать status
также правильно, чтобы проверить, простаивает он или нет?
не могли бы вы помочь мне здесь, я немного запутался
Да, я пробовал только это, но получаю token
как undefined
Вы использовали useFetch дважды. И API_headers нельзя использовать, когда первый ответ useFetch еще не пришел
Вы используете useFetch дважды одновременно
Хорошо, в таком случае мне нужно сделать копию useFecth и вызывать ее для получения api_data?
Да. К сожалению, у меня нет вашего полного кода, чтобы точно сказать вам, что делать.
Эй, я создал реплику под названием useFetch2
. Я использовал useFecth
для токена и useFetch2
для вызова API данных, но токен все еще не передается (не определено). slack-files.com/T04MYU6C6-F01HHSATB35-c70717be24 вот полный код. не могли бы вы проверить один раз, если я сделал что-то не так?
Ты проделал очень хорошую работу, мой друг. Я увидел ваш код и решил проблему. Посмотрите внимательно на этот код. github.com/mahdi-zoraghi/fix-problem-stackoverflow/blob/main/…
эй, заменил код, получаю эту ошибку Unhandled Rejection (Error): Rendered more hooks than during the previous render.
i.imgur.com/9Wj5n57.png Не знаю, что это значит
и кстати, если вы не возражаете, я попробовал по-другому. теперь токен и api_headers печатаются в консоли, но получают 401 error
, поэтому я проверил заголовки ответа в Network и заметил, что auth headers is not getting injected
и, следовательно, получил 401 unauthorized error
. Вот код slack-files.com/T04MYU6C6-F01J7LJH6KA-7e54b04fa6. Не могли бы вы предложить исправление для этого, так как это может быть последний шаг для получения окончательного результата. Спасибо!
хорошо. видеть это . github.com/mahdi-zoraghi/fix-problem-stackoverflow2/blob/main/…
Вы можете присоединиться к этому чату SFO, пожалуйста? продолжить обсуждение в чате.
Не могли бы вы сказать мне, что вам нужна одинаковая логика для всех API или только для одного API, если вам нужно передать все API, чтобы вы могли создавать собственные перехватчики для вызова каждый раз перед вызовом API.