
구글 로그인을 구현하기 위해 Next-Auth를 설치한다
import NextAuth from "next-auth";
import GoogleProvider from "next-auth/providers/google";
export default NextAuth({
providers: [
GoogleProvider({
clientId: process.env.GOOGLE_CLIENT_ID!,
clientSecret: process.env.GOOGLE_CLIENT_SECRET!,
}),
],
});
next-auth 페이지를 만든 후

const BottomHeader = () => {
const dispatch = useDispatch();
const { userInfo } = useSelector((state: StateProps) => state.next);
const handleSignOut = () => {
signOut();
dispatch(removeUser());
};
return (
<div className="w-full h-10 bg-amazon_light text-sm text-white px-4 flex items-center">
<p className="flex items-center gap-1 h-8 px-2 border border-transparent hover:border-white cursor-pointer duration-300">
@@ -21,11 +32,14 @@ const BottomHeader = () => {
<p className="hidden md:inline-flex items-center h-8 px-2 border border-transparent hover:border-white cursor-pointer duration-300">
Sell
</p>
{userInfo && (
<button
onClick={handleSignOut}
className="hidden md:inline-flex items-center h-8 px-2 border border-transparent hover:border-red-600 hover:text-red-400 text-amazon_yellow cursor-pointer duration-300"
>
Sign Out
</button>
)}

const Header = () => {
const { data: session } = useSession();
const [allData, setAllData] = useState([]);
const { productData, favoriteData, userInfo, allProducts } = useSelector(
(state: StateProps) => state.next
);
const dispatch = useDispatch();
useEffect(() => {
setAllData(allProducts.allProducts);
}, [allProducts]);
useEffect(() => {
if (session) {
dispatch(
addUser({
name: session?.user?.name,
email: session?.user?.email,
image: session?.user?.image,
})
);
}
}, [session]);
{userInfo ? (
<div className="flex items-center px-2 border border-transparent hover:border-white cursor-pointer duration-300 h-[70%] gap-1">
<img
src={userInfo.image}
alt="userImage"
className="w-8 h-8 rounded-full object-cover"
/>
<div className="text-xs text-gray-100 flex flex-col justify-between">
<p className="text-white font-bold">{userInfo.name}</p>
<p>{userInfo.email}</p>
</div>
</div>
) : (
<div
onClick={() => signIn()}
className="text-xs text-gray-100 flex flex-col justify-center px-2 border border-transparent hover:border-white cursor-pointer duration-300 h-[70%]"
>
<p>Hello, sign in</p>
<p className="text-white font-bold flex items-center">
Account & Lists{" "}
<span>
<BiCaretDown />
</span>
</p>
</div>
)}
