이번 글은 Github 로그인을 다시 한 번 정리해보겠습니다.
1. 우선, Github 로그인이 아닌, Username과 Password를 이용한 방식은 비교적 간단합니다.
Username과 Password를 Post방식으로 전달하고,
우리가 설치해준 플러그인인 mongoose가 자동으로 체크를 해줍니다.
2. 만약 Password가 맞으면, Passport에게 "맞습니다"라고 알리고,
Passport는 쿠키를 생성합니다.
3. 이 때, Github 인증은 다릅니다.
(1) 사용자는 Github 로그인 버튼 클릭을 통해, Github 웹사이트로 이동하게 됩니다.
(2) Github 웹사이트에서 권한 승인을 합니다.
(3) 그 이후, Github 웺사이트는 우리에게 그 사용자의 정보를 보내주는데,
githubCallback, 즉 /auth/github/callback 이라는 URL로 오게 됩니다.
(4) 그렇게 되면, Passport가 함수를 호출하는데,
githubLoginCallback이라는 우리가 만들어준 함수입니다.
(5) githubLoginCallback 함수는 사용자의 Profile과 같은 모든 정보를 받습니다.
이 정보로 email로 사용자 찾기, github ID로 사용자 찾기와 같은
필요한 걸 할 수 있습니다.
(6) 이 githubLoginCallback 함수의 조건은 Callback 함수를 리턴해야 한다는 것입니다.
그리고 그 cb 함수에게는 error가 있는지 user는 있는지 알려줘야 합니다.
(7) Error가 있다면 Passport는 "Error가 있구나, User는 없구나" 하고 끝내버리고,
Passport는 /login으로 리다이렉트합니다.
(8) 반대로, User가 존재하면 Passport는 이 User를 취해서 쿠키를 만들고, 쿠키를 저장합니다.
이 저장된 쿠키를 브라우저에 내보내게 됩니다.
그리고 postGithubLogin이 실행되고 home으로 리다이렉트됩니다.
그렇게 Github 로그인은 마무리 됩니다.
"다음은 노마드코더(https://academy.nomadcoders.co/)의 [초급 풀스택] 유튜브 클론 코딩 강의를 참고하였습니다."