Я использую клиент Apollo в ReactJS для взаимодействия с GraphQL API.Мы используем проверку подлинности Firebase, и это JWT, чтобы гарантировать, что наш API не предоставляет общедоступные личные данные, но проблема в том, что токен firebase истекает примерно раз в час.
В настоящее время я сохраняю локальное хранилище IdToken, когда пользователь входит в систему ииспользуйте это в заголовках запросов, но когда срок действия токена истечет, graphql вернет ошибку Non Authorized.Я также пытался использовать customfetch для функции createHttpLink из apollo
const customFetch = async (uri, options) => {
console.log(firebase.auth.currentUser)
if (firebase.auth.currentUser) {
const token = await firebase.auth.currentUser.getIdToken()
localStorage.setItem('token', token)
options.headers.authorization = token;
return fetch(uri, options);
}
else {
firebase.auth.onAuthStateChanged(async (user) => {
if (user) {
console.log('Inside on Auth')
const token = await user.getIdToken()
localStorage.setItem('token', token)
options.headers.authorization = token;
return fetch(uri, options);
}
})
}
console.log('End of Fetch')
};
, но выборка завершается до завершения firebase.auth.onAuthStateChanged, поэтому она также не работает