0. API
GitHub 앱에 대한 사용자 액세스 토큰 생성 - GitHub Docs
사용자에게 앱 활동을 배정하기 위해 GitHub App에 대한 사용자 액세스 토큰을 생성할 수 있습니다.
docs.github.com
1. startGithubLogin
- github 로그인 버튼을 누르면 userRouter에 생성한 route인 /users/github/start로 이동
- route는 startGithubLogin을 가지고 있고 이동시켜주는 역할만 수행
- 상단 링크의 1번을 참조하여 url과 pamameter를 조합하여 user를 github로 이동시킴
- url을 설정하는 이유는 우리가 필요한게 무엇인지 github에 알려줄 수 있기 때문
- client_id, scope 등등
- scope에는 해당 user로 뭘 할지가 설정
- 우리는 user 정보를 읽고 user email에만 접근
- github가 데이터를 공유하는데 동의하면 Authorization callback URL에 등록된 주소로 user를 보냄
2. finishGithubLogin
- 역시 route에는 /users/github/finish가 있으며, finishGithubLogin로 이동
- user가 github에서 돌아올 때 url에 code를 가지고 옴
- user가 승인했다고 github가 알려준다는 뜻
- 상단 링크의 3번을 참조하여 url과 pamameter를 조합하고 fetch를 사용하여 조합된 url로 POST request를 보냄
- 잘됐다면 github는 우리에게 access_token을 보내줌
- access_token은 Github API와 상호작용할 때 사용
- Github API에 어떤 method를 보내더라도 access_token만 있다면 응답해줌
- user API에 요청을 하고 access_token을 보내면 user 정보를 받을 수 있음
- 가끔 user들이 email을 보여주지 않을 때도 있어서 email API에게도 같은 방식으로 요청을 보냄
- email array를 돌려주는데, 우린 거기서 primary이면서 verified된 email을 찾으면 됨
- 찾지 못하면 로그인 페이지로 돌려보냄
- 여기에 notification을 설정해줄건데 차후에 넣을 예정
- primary이면서 verified된 email을 찾았다면, db에 회원가입된 동일한 email이 찾아야함
- 찾지 못하면 github에서 준 user 정보를 가지고 user를 생성
- 우린 socialOnly를 default로 false를 두고 github로 생성되면 true로 변경
- 또한 postLogin에서 socialOnly가 false인 유저를 찾는데, 이를 통해 소셜로그인과 기본로그인을 구별할 수 있기 때문
- 찾았다면 로그인되면서 홈으로 돌려보냄
'개발 > Node.js' 카테고리의 다른 글
Edit Password (0) | 2024.11.13 |
---|---|
Edit Profile / Protector and Public Middleware (0) | 2024.11.13 |
Github Login / Logout (0) | 2024.11.13 |
Github Login / Fetch / API (0) | 2024.11.12 |
Dotenv / Github Login / UrlSearchParams (0) | 2024.11.12 |