'use client'; import { Loader2 } from 'lucide-react'; import { useRouter, useSearchParams } from 'next/navigation'; import { useEffect, useRef } from 'react'; import { useAuthStore } from '@/lib/auth-store'; export default function GoogleCallbackPage() { const router = useRouter(); const searchParams = useSearchParams(); const { handleOAuthCallback } = useAuthStore(); const processed = useRef(false); useEffect(() => { if (processed.current) return; processed.current = true; const accessToken = searchParams.get('accessToken'); const refreshToken = searchParams.get('refreshToken'); const expiresIn = searchParams.get('expiresIn'); const error = searchParams.get('error'); if (error) { router.replace(`/login?error=${encodeURIComponent(error)}`); return; } if (!accessToken || !refreshToken) { router.replace('/login?error=oauth_failed'); return; } handleOAuthCallback( accessToken, refreshToken, expiresIn ? Number(expiresIn) : 900, ) .then(() => { const redirect = searchParams.get('redirect') || '/dashboard'; router.replace(redirect); }) .catch(() => { router.replace('/login?error=oauth_failed'); }); }, [searchParams, handleOAuthCallback, router]); return (
Đang xử lý đăng nhập Google...