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

Feature/#45 깃허브 로그인 구현 #103

Conversation

tmdgh1592
Copy link
Member

@tmdgh1592 tmdgh1592 commented Jul 26, 2023

#️⃣연관된 이슈

ex) #45

📝작업 내용

깃허브 로그인 화면을 구현하였습니다.
작업 과정은 다음과 같습니다.

  1. manifest의 Activity intent-filter로 Github -> Developer Settings -> OAuth에서 만든 host와 scheme를 지정한다. 이 때, 로그인 성공 후 리다이렉트되어 onNewIntent()가 호출될 수 있도록 launchMode를 singleTask로 지정한다.
  2. https://github.com/login/oauth/authorize/{github_client_id} 를 웹뷰 등으로 접속한다.
  3. 사용자가 로그인에 성공하면 1번 과정에서 지정한 host, scheme로 리다이렉트 되어 Activity의 onNewIntent() 콜백 메서드가 호출된다.
  4. Github에서 제공하는 code를 파싱하여 서버에 전송하고 UID, AccessToken을 입력받아 로컬 저장소에 저장한다.

스크린샷 (선택)

스크린샷 2023-07-26 오후 3 14 22

예상 소요 시간 및 실제 소요 시간

이슈의 예상 소요 시간과 실제 소요된 시간을 분 or 시간 or 일 단위로 작성해주세요.
4시간/4시간
ex) 예상시간/걸린시간 => 2시간/3시간

💬리뷰 요구사항(선택)

LoginActivity와 LoginViewModel 위주로 리뷰해주시면 좋을 것 같습니다.

@tmdgh1592 tmdgh1592 added the Android 안드로이드 관련 이슈 label Jul 26, 2023
@tmdgh1592 tmdgh1592 self-assigned this Jul 26, 2023
@tmdgh1592 tmdgh1592 added the High Priority 리뷰 우선순위가 높은 PR label Jul 26, 2023

override fun onNewIntent(intent: Intent?) {
super.onNewIntent(intent)
intent?.data?.getQueryParameter(GITHUB_CODE_PARAMETER)?.let(viewModel::saveGithubCode)
Copy link
Collaborator

Choose a reason for hiding this comment

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

이거 함수로 묶으면 좋을 것 같아요.
어떤 일을 하는 문장인지 한눈에 파악이 안되는 것 같습니다.

Copy link
Member Author

Choose a reason for hiding this comment

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

이렇게만 보면 한 눈에 파악하기 어렵긴 하겠군요
별도의 함수로 분리하겠습니다 👌

super.onCreate(savedInstanceState)
binding = ActivityLoginBinding.inflate(layoutInflater).setContentView(this)
binding.viewModel = viewModel
binding.btnLogin.setOnClickListener(this)
Copy link
Collaborator

Choose a reason for hiding this comment

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

저는 개인적으로 setOnClickListener 안에 클릭 구현 내용이 들어가있는게 가독성이 좋은 것 같습니다. 뒤에가서 또 R.id.btn 을적어줘야 하는것도 코드 중복인 것 같이 느껴지네요

Copy link
Member Author

Choose a reason for hiding this comment

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

이후에 다른 소셜 로그인이 적용될 경우를 고려해서 View.OnClickListener를 구현하고, onClick() 메서드에서 로그인 로직을 처리하도록 하려고 하였습니다.
하지만 말씀을 들어보니 지금 당장 필요하지는 않은 것 같네요 👍
나중을 생각해서 코드가 길어지는 것보다 일단 지금 당장의 가독성을 챙기겠습니다.

private val tokenRepository: TokenRepository,
) : BaseViewModel(dispatcherProvider) {
private val _loginState: MutableLiveData<LoginUiState> = MutableLiveData()
val loginState: LiveData<LoginUiState> = _loginState
Copy link
Collaborator

@chws0508 chws0508 Jul 26, 2023

Choose a reason for hiding this comment

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

개인적으로 LoginUiState 에 Loading 을 넣지 않고, 따로 Loading 을 LiveData 으로 관리하고, Xml의 progress Bar 에 visible에 vm.loading 으로 값을 넣어서 관리하는것이 가독성이 좋을 것 같습니다. LoginUiState 에 Loading 까지 있는 것이 개인적으로 어색하게 느껴집니다.
개인적인 의견이니 반영은 안해도 됩니다.

Copy link
Member Author

Choose a reason for hiding this comment

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

저 또한 지금 구조에 불편함을 느끼고 있습니다.
해당 리뷰는 팀원들과 조금 더 상세히 이야기를 나누고자 따로 이슈를 생성했습니다.

Copy link
Collaborator

@chws0508 chws0508 left a comment

Choose a reason for hiding this comment

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

^^

@chws0508 chws0508 merged commit 02d2d7f into woowacourse-teams:android-main Jul 27, 2023
1 check failed
@tmdgh1592 tmdgh1592 deleted the Feature/#45-깃허브_로그인_구현 branch July 30, 2024 05:50
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Android 안드로이드 관련 이슈 High Priority 리뷰 우선순위가 높은 PR
Projects
Status: Archive
Development

Successfully merging this pull request may close these issues.

4 participants