[IN-IT] Github OAuth 기능 추가

soohee·2023년 3월 8일

project

목록 보기
5/7
post-thumbnail

개발자 커뮤니티인 만큼, 소셜 로그인을 Github OAuth로 사용하기로 했었다.

초기 설정

그러기 위해선 첫번째로, 요청을 할 수 있는 계정(token)을 가지고 있어야 한다.

  1. setting에 들어가자.

  2. 왼쪽 하단에 Developer settings에 들어가서 OAuth Apps에 들어간다.

  3. OAuth application이 없다면 New OAuth App을 눌러서, 사용 계정을 만들어주자.

이렇게 되면 기본 세팅이 끝났다.
그 후, Github Docs에 들어가서 나와있는 방법대로 차근차근 따라가주면 된다.
➡️ https://docs.github.com/ko/apps/oauth-apps/building-oauth-apps/authorizing-oauth-apps

OAuth 구현

  1. code받아오기 위해, client_id와 redirect_uri를 가지고 redirect 시키기

    GET https://github.com/login/oauth/authorize

해당 uri와 client_id를 가지고 redirect를 시키게 되면 Code를 받을 수 있다.

  1. code를 통해, 사용자의 access_token을 받기

    POST https://github.com/login/oauth/access_token

1에서 받은 code와 client_id, client_secret을 가지고 해당 uri에 요청보내게 되면, code가 일치할 경우, 해당 사용자에 대한 access_token을 받을 수 있다.

  1. access_token을 통해, 유저 정보 가져오기

    Authorization: Bearer OAUTH-TOKEN
    GET https://api.github.com/user

헤더에 2에서 받은 access_token을 넣고, 요청을 보내게 되면, 해당 유저의 정보를 받을 수 있게 되고, 이 정보를 데이터베이스 안에 넣게 되면 회원가입/로그인 기능이 완성된다.

이슈사항

  1. @RestController를 사용할 경우, controller 단에서 redirect 시킬 때, "redirect:"로 사용이 불가능 하다!!
    → 이럴 때, new ResponseEntity<>(headers, HttpStatus.MOVED_PERMANENTLY)를 통해서, redirect가 가능하다.
    (물론, header에 해당 uri를 넣어야함!!)
profile
🐻‍❄️

0개의 댓글