나는
firebaseUser 와 user
가 같은 유저인줄 알았는데, 그게 아니었다,
...중략...
interface UserCxt {
user: User;
setUser: (user: User) => void;
}
...중략....
const UseAuth = ({ children }: { children: React.ReactNode }) => {
...중략...
useEffect(() => {
const unsubscribe = onAuthStateChanged(auth, async (firebaseUser) => {
console.log('firebaseUser', firebaseUser);
if (firebaseUser) {
try {
const token = await firebaseUser.getIdToken();
defaultHeaders.Authorization = `Bearer ${token}`;
const res = await fetch('/users/me', {
method: 'GET',
headers: defaultHeaders,
});
if (res.status === 200) {
const user = await res.json();
setUser(user);
navigate('/home');
}
setUser(firebaseUser);
} catch (error) {
console.log('At UseAuth.tsx, Error is found', error);
}
} else {
delete defaultHeaders.Authorizations;
setUser(null);
}
});
...중략...
파이어베이스 유저가 제대로 찍히는지 알기 위해
setUser(firebaseUser)
를 했지만, 사실
setUser(user) / setUser(user)
가 진짜 유저에 대한 처리 부분이다
const res = await fetch('/users/me', {
method: 'GET',
headers: defaultHeaders,
});
if (res.status === 200) {
const user = await res.json();
setUser(user);
navigate('/home');
}