Sitemap

7분만에 Next Auth 알아보기

next.js에서 쉽게 소셜 로그인 만들기

5 min readMay 23, 2021

--

Press enter or click to view image in full size
Photo by Micah Williams on Unsplash

Next JS에서는 Next Auth라고 하여 Social 로그인을 쉽게 관리할 수 있는 라이브러리가 있습니다.

이번 블로그에서는 해당 라이브러리를 활용해서 빠르게 소셜 로그인을 빠르게 구현해 보도록 하겠습니다.

라이브러리 설치하기

// next.js 설치하기
yarn create next-app next-auth-tutorial
// next auth 설치하기
yarn add next-auth

Next Auth 설정하기

환경 변수 설정하기

// .env
GITHUB_ID = 123123123123333
GITHUB_SECRET = abcdddd
NEXTAUTH_URL=http://localhost:3000

root 폴더 내 .env 파일에 github에서 받은 클라이언트 정보와 NEXTAUTH_URL을 입력합니다. NEXTAUTH_URL은 next.js가 실행될 URL을 의미합니다.

아직 소셜 로그인이 익숙하지 않아 클라이언트 정보를 어디서 발급 받아야하는지 모르시는 분들은 이 링크를 참조하여 주세요.

nextauth API 만들기

page 폴더 내에 api/auth/[...nextauth].js 파일을 하나 생성합니다. 이렇게 되면 /api/auth/* 의 경로로 요청되는 모든 request는 위 파일에서 handling이 가능하게 됩니다.

DB 연결은 지금은 필요 없으나, 다음 파트에서 DB에 저장하는 방법을 배울 예정이기 때문에 DB 설정이 하다는 것만 알아두고 넘어가도록 하겠습니다.

next.js에 nextauth 연결하기

위와 같이 next-auth가 제공하는 Provider로 컴포넌트를 감싸 줌으로 인해 next.js 내 모든 컴포넌트에서 useSession hooks를 활용하여 session 정보에 접근할 수 있게 됩니다.

컴포넌트에 nextAuth 활용하기

기존의 index.js 파일의 위와 같은 형태로 변경해 줍니다.

여기서 몇 가지만 자세히 알아보고 넘어가도록 하겠습니다.

useSession Hooks

로그인 여부를 알려주는 hooks으로 로그인 여부에 따라 배열의 첫번째 인자로 유저의 정보를 return 해줍니다. 그래서 위 코드에서는 session의 여부의 따라 로그인/로그아웃 버튼 여부를 노출하여 주었습니다.

배열의 두번째 인자로는 loading 정보가 담기는데, 현재 로그인 여부를 체크하고 있는지를 알 수 있습니다. 즉 loading 여부를 확인하여 loading bar와 같은 컴포넌트를 추가할 수 있습니다.

signIn, signOut 함수

signIn, signOut 함수는 next auth에서 제공해주는 함수로 해당 함수를 실행하면 next-auth가 만들어 놓은 로그인 페이지 혹은 로그아웃 페이지로 이동하게 됩니다. 편리하게 사용하게 하기 위해 만들어 놓은 것이지 수정이 가능합니다. (링크)

이제 실행해 보도록 하겠습니다.

yarn build && yarn start

최초에 실행하면 login 상태가 아니기 때문에 session 정보에 따라 Sign In 버튼을 노출시키게 됩니다. Sign In 버튼을 클릭하면 아래와 같은 next-auth에서 생성한 페이지로 이동하게 됩니다.

Press enter or click to view image in full size

Sign in with Github 버튼을 클릭하고, github 인증을 끝내면 아래와 같이 로그인한 유저의 이름과 함께 로그아웃 버튼이 생성되게 됩니다.

Wrap-up

Next Auth를 활용하면 위와 같이 정말 빠르고, 간단하게 Social Oauth를 구현할 수 있습니다. 뿐만 아니라 다양한 Provider를 설정 하나만으로 쉽게 할 수 있기 때문에 Next.js를 쓰신다면 Next Auth를 활용해 보는 것을 강력 추천드립니다.

다음 시간에는 Next Auth를 활용하여 DB에 회원 정보를 저장하고, 불러오는 방법을 알아보도록 하겠습니다.

  • github에서 전체 코드 보기 (링크)
Press enter or click to view image in full size

이 블로그 글은 Code Pot, 리액트 챌린지의 과제로 작성되었습니다.

Code Pot, 리액트 챌린지가 궁금하다면? ⇒ 링크

참고 자료

  • NextAuth.js Intro [1 of 3]: One-Click Signup (링크)
  • Next Auth Tutorial (링크)

--

--

toy-crane
toy-crane

Written by toy-crane

누구나 쉽게 개발을 공부할 수 있도록 고민합니다.

No responses yet