Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[FE] GitHub OAuth 로그인/회원가입 #169

Merged
merged 3 commits into from
Aug 18, 2023
Merged

Conversation

Kakamotobi
Copy link
Member

Issues

What is this PR? 👓

  • GitHub OAuth 기능 구현.

Key changes 🔑

  • GitHubLoginButton 구현.
  • LoginPage를 Callback URL로 등록해놔서 useEffect로 url params에 code 여부를 확인해서 있으면 서버로 보내는 방식입니다.

To reviewers 👋

  • 슬랙 스레드에 정리한 흐름대로 구현했습니다.
  • 일단 fe-w4 브랜치를 AWS Amplify에 배포해놨고 (이 PR이 아직 fe-w4에 없고) 배포된 앱을 GitHub OAuth Client로 등록해놔서 개발환경에서 시도는 못해봤습니다. 그리고 서버 SSL Error 해결되고 확인 가능할것 같습니다.
  • fe-w4에 머지하고 데모전 오전에 얼른 확인해봐야할 것 같습니다.

- OAuth 흐름 변경.
  - Server가 아닌 Client가 GitHub OAuth Client로 등록해서 OAuth시작.
  - Client는 GitHub으로부터 code을 받고 Server로 전달.
- GitHubLoginButton 클릭시 GitHub authorization 화면으로 이동.
- Callback URL로 배포 주소 (https://fe-w4.d2kit8rai80g4y.amplifyapp.com/)로 설정.
  - useEffect로 URL params에 있는 `code`을 꺼내어 서버로 보냄.
  - Server 응답(200 || 202)에 따라 GitHub을 통한 최초 접속이라면 사용자로부터 username을 받고 제출해야 성공적으로 회원가입 및 로그인.
Copy link
Member

@youzysu youzysu left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

수고하셨습니다! 🙏 슬랙에 공유해주신 흐름 기록용으로 같이 작성할게요!

React —화면 이동—> GitHub (사용자 승인)
GitHub —code—> React
React —code—> Java (GET "/api/auth/login/oauth/github?code=ASDADS")
Java —code—> GitHub
GitHub —GitHub accessToken—> Java
Java —GitHub accessToken —> GitHub
GitHub —user info—> Java
Java —{ accessToken, user } || { email }—> React
- 200: 바로 로그인 (accessToken, user 반환)
- 202: 사용자가 username을 등록해야함 (email 반환)
React —username, email—> Java (POST /api/auth/signup/oauth)
- 200: 바로 로그인 (accessToken, user 반환)

GitHub 로그인 버튼 클릭 시 gitHubCredentialsLink로 이동
-> 사용자 승인 (code 생성)
-> getGitHubLogin 요청: UrlParams의 code
-> status: 200이면 바로 로그인, status: 202(최초 로그인)이면 response에 gitHub 로그인 email
-> email 상태로 두고 email이 있으면 username 받는 화면 보여준다.
-> 입력받은 username과 기존 email로 username post 요청(postOAuthUsername)
-> 성공 시 response로 받은 정보로 login 처리 후 메인 화면으로 이동

@youzysu youzysu merged commit a655a6e into fe-w4 Aug 18, 2023
@youzysu youzysu deleted the fe/feat/#156-github-oauth branch August 18, 2023 02:22
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants