[React] 리액트 구글 로그인

업데이트:
1 분 소요

react-google-login 기능을 이용하여 구글 로그인 기능 만들기

react-google-login을 설치합니다

npm install react-google-login

로그인성공시 responseGoogle로 응답을 전달합니다

import { GoogleLogin } from 'react-google-login';

const responseGoogle = (response) => {
  console.log(response);
}

const Login = () => {
    return (
        <>
            <GoogleLogin
            clientId='구글 OAuth 클라이언트 ID'
            buttonText="로그인"
            onSuccess={responseGoogle}
            onFailure={responseGoogle}
            cookiePolicy={'single_host_origin'}
            />
        </>
    )
}

export default Login;

로그인성공시 localStorage에 유저 ID, 유저 Email, 유저 Name 을추가합니다

import { GoogleLogin } from 'react-google-login';

const responseGoogle = (response) => {
  window.localStorage.setItem("user_id", response.googleId);
  window.localStorage.setItem("user_email", response.Ft.pu);
  window.localStorage.setItem("user_name", response.Ft.Ue);
}

const Login = () => {
    return (
        <>
            <GoogleLogin
            clientId='구글 OAuth 클라이언트 ID'
            buttonText="로그인"
            onSuccess={responseGoogle}
            onFailure={responseGoogle}
            cookiePolicy={'single_host_origin'}
            />
        </>
    )
}

export default Login;

로그인성공시 localStorage에 유저 ID, 유저 Email, 유저 Name 을추가하고
로그아웃시 localStorage에있는 유저 ID, 유저 Email, 유저 Name 을삭제합니다

import React from 'react'
import { GoogleLogin, GoogleLogout } from 'react-google-login'

const responseGoogle = (response) => {
    window.localStorage.setItem("user_id", response.googleId);
    window.localStorage.setItem("user_email", response.Ft.pu);
    window.localStorage.setItem("user_name", response.Ft.Ue);
  }

const logout = () => {
    window.localStorage.removeItem("user_id");
    window.localStorage.removeItem("user_email");
    window.localStorage.removeItem("user_name");
  }

const Login = () => {
    return (
        <>
          <GoogleLogin
          clientId='구글 OAuth 클라이언트 ID'
          buttonText="로그인"
          onSuccess={responseGoogle}
          onFailure={responseGoogle}
          cookiePolicy={'single_host_origin'}
          />
          <GoogleLogout
          clientId="구글 OAuth 클라이언트 ID"
          buttonText="로그아웃"
          onLogoutSuccess={logout}
          />
        </>
    )
}

export default Login;

localStorage.getItem("user_id")향목이 null 일 경우 로그인을 표시하고
아닐경우 로그아웃 버튼을 표시합니다

{localStorage.getItem("user_id") === null ? (
  <GoogleLogin
    clientId='구글 OAuth 클라이언트 ID'
    buttonText="로그인"
    onSuccess={responseGoogle}
    onFailure={responseGoogle}
    cookiePolicy={'single_host_origin'}
  />
) : (
  <GoogleLogout
    clientId="구글 OAuth 클라이언트 ID"
    buttonText="로그아웃"
    onLogoutSuccess={logout}
  />
)}