์น์์๋ ๋ค์ดํฐ๋ธ ์ฑ์ฒ๋ผ ํธ์ ์๋์ ๋ฐ์ ์ ์์ต๋๋ค. ์น์ ์ฌ์ฉ์ฑ์ ๋ค์ดํฐ๋ธ ์ฑ์ฒ๋ผ ๊ฐ์ ํ๊ธฐ ์ํด์ ๋์จ ๊ธฐ์ ์ธ PWA(Progressive Web Application)์ ํ์ฉํ๋ฉด ๊ฐ๋ฅํฉ๋๋ค.PWA๋ Progressive Web Application์ผ๋ก, ์น์ด ์น
์ค์ผ๋ ํค UI๋ ์๋ฒ๋ก๋ถํฐ ๋ฐ์ดํฐ๋ฅผ ๊ฐ์ ธ์ค๋ ๋์, ์์ผ๋ก ๋ณด์ฌ์ง ์ปจํ ์ธ ๋ฅผ ๋๋ต์ ์ผ๋ก ํํํ๋ UI์ด๋ค.์ฌ์ฉ์๋ ๋น ํ๋ฉด์ ๋ณด๋ฉฐ ํ์ผ์์ด ๊ธฐ๋ค๋ฆฌ๋ ๊ฒ ๋ณด๋ค, ์ค์ผ๋ ํค UI ๋ฅผ ํตํด ์ง๋ฃจํจ์ ํด์ํ ์ ์๋ค.์ค์ผ๋ ํค UI ๋ ์ผ๋ฐ์ ์ธ ๋ก๋ฉ ์คํผ๋๋ณด๋ค ์ปจํ ์ธ ๋ฅผ ๊ตฌ์ฒด์ ์ผ๋ก
https://github.com/jinwoo-Bae/spring-react-google-oauth2Googgle Oauth2 ๋ฅผ ์ฌ์ฉํ ๋ก๊ทธ์ธ ์๋๋ฆฌ์ค์ ๋๋ค.ํด๋ผ์ด์ธํธ๋ ๋ฆฌ์กํธ๋ฅผ, ์๋ฒ๋ ์คํ๋ง๋ถํธ๋ฅผ ์ฌ์ฉํ์ฌ ๊ตฌํํ์์ต๋๋ค.flow chart๊ฒฐ๊ณผ๋ ๋ค์๊ณผ ๊ฐ
์ด๋ฒคํธ ์ฐธ์ฌ ๋ฒํผ์๋ ํด๋ฆญ์ ์ด๋ฒคํธ ์ฐธ์ฌ API๋ฅผ ์์ฒญํ๋ ํธ๋ค๋ฌ๊ฐ ๋ฑ๋ก๋์ด์์ต๋๋ค.API ์์ฒญ์ ๋ณด๋ด๊ธฐ ์ ์ ๋ฒํผ์ ๋นํ์ฑํ ํ๊ณ , ์๋ต์ ๋ฐ๊ณ ๋์ ํ์ฑํ ํ๋๋ก ๋ก์ง์ ๊ตฌํํ์ต๋๋ค.ํ์ง๋ง ์ํ๋ ๋๋ก ๋์ํ์ง ์์์ ํ์ธํ ์ ์์์ต๋๋ค.์๋์ ์ฝ๋๋ ์ด๋ฒคํธ ์ฐธ์ฌ
๋ฌดํ ์คํฌ๋กค์ด๋ ์ฌ์ฉ์๊ฐ ํ์ด์ง ํ๋จ์ ๋๋ฌํ์ ๋, ์ปจํ ์ธ ๊ฐ ๊ณ์ ๋ก๋๋๋ ์ฌ์ฉ์ ๊ฒฝํ(UX) ์ ๋๋ค. ๋ฌดํ ์คํฌ๋กค์ ๊ตฌํํ๊ธฐ ์ํด ํ์ํ ๊ธฐ์ ์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.์ปจํ ์ธ fetch APIํ์ด์ง ํ๋จ ์์ ๊ด์ฐฐ์๋ก์ด ์ปจํ ์ธ ์ถ๊ฐ์ปจํ ์ธ ๋ฅผ ๊ฐ์ ธ์ค๋ data fetch ๋
์์ด์ฝ SVG ์ด๋ฏธ์ง์ ์๊ฐ ๋ง์ ๊ฒฝ์ฐ์ ๋ชจ๋ SVG ํ์ผ์ ๊ธฐ์ตํ๊ธฐ๋ ์ฝ์ง ์๊ณ , ์คํ์ผ๋ง๊ณผ props๋ฅผ ์ ๋ฌํ๊ธฐ์ ๋ฒ๊ฑฐ๋ก์์ด ๋ง๊ธฐ ๋๋ฌธ์ ์์ด์ฝ ์ปดํฌ๋ํธ๋ฅผ ๋ง๋ค๊ธฐ๋ก ํ๋ค.SVG๋ ๊ฐ๋ฐ์๊ฐ ์ง์ ์์๊ฐ๊ณผ ํฌ๊ธฐ ๊ฐ๋ฑ์ ๋ณ๊ฒฝํ ์ ์๊ธฐ ๋๋ฌธ์ ์ฌ๋ฌ๊ฐ์ ์ด๋ฏธ์ง ํ์ผ์ ์ ์ฅ
๋ฆฌ์กํธ์ ํด๋์คํ ์ปดํฌ๋ํธ์์ ์ํ ๊ฐ์ ์ ๋ฐ์ดํธํ ๋ ์ฌ์ฉ๋๋ ๋ฉ์๋์ธ setState๋ ๋น๋๊ธฐ์ ์ผ๋ก ๋์ํฉ๋๋ค. ๋น๋๊ธฐ์ ์ผ๋ก setState๊ฐ ๋์ํ๋ค๋ ์๋ฏธ๊ฐ ์ด๋ค ์๋ฏธ์ธ์ง ๋ค์ Counter ์์ ๋ฅผ ๋ค๋ฉฐ ์ค๋ช ํด๋ณด๊ฒ ์ต๋๋ค.๋ฒํผ์ ๋๋ฅด๋ฉด 1์ฉ ์ฆ๊ฐํ๋ค.์์ ํด๋์คํ
๋ฆฌ์กํธ๋ฅผ ์ฌ์ฉํด์ ์ปดํฌ๋ํธ๋ฅผ ๊ฐ๋ฐํ๋ค๋ณด๋ฉด ์์ฃผ ๋ฃ๋ ์ํ ๋ฏน ๋์์ธ ํจํด์ ๋ํด์ ์๊ธฐํด๋ณด๋๋ก ํ๊ฒ ์ต๋๋ค.์ํ ๋ฏน ๋์์ธ์ ๋์์ธ ํจํด์ค์ ํ๋์ ๋๋ค. ๊ฐ์ฅ ์์ ์์๋ถํฐ, ์์๊ฐ ๋ชจ์ฌ์ ๋ถ์๋ฅผ ์ด๋ฃจ๊ณ , ๋ถ์๋ค์ ๋ชจ์์ ์ ๊ธฐ์ฒด๋ฅผ ํ์ฑํ๊ณ , ์ ๊ธฐ์ฒด๋ฅผ ๋ชจ์ ํ๋์ ํ ํ๋ฆฟ์ผ๋ก