Search

김승완 멘토링 신청

분류
안드로이드
담당멘토
정민지
멘토링 요청시간
2023/09/16 19:00
멘토링 시간
2023/09/16 19:00-20:00
멘토링방
멘토링룸2
배정상태
해결완료
비용지급
시트 반영
번호
0
신청팀
개인
주말상주
소요시간
1
작성자
김승완

멘티 질문

구글 로그인을 하려는데 전에는 되던게 어느 날부터는 로그인 화면 창으로 이동조차 안합니다 ..
private fun signInWithGoogle() { val googleSignInOptions = GoogleSignInOptions.Builder(GoogleSignInOptions.DEFAULT_SIGN_IN) .requestIdToken(getString(R.string.default_web_client_id)) .requestEmail() .build() val googleSignInClient = GoogleSignIn.getClient(requireActivity(), googleSignInOptions) val signInIntent = googleSignInClient.signInIntent startActivityForResult(signInIntent, RC_SIGN_IN) } override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) { super.onActivityResult(requestCode, resultCode, data) if (requestCode == RC_SIGN_IN) { if (resultCode == Activity.RESULT_OK) { val task = GoogleSignIn.getSignedInAccountFromIntent(data) try { val account = task.getResult(ApiException::class.java) firebaseAuthWithGoogle(account) } catch (e: ApiException) { showSnackBar("로그인에 실패하였습니다.") } } else { showSnackBar("로그인에 실패하였습니다.") } } } private fun firebaseAuthWithGoogle(account: GoogleSignInAccount?) { val credential = GoogleAuthProvider.getCredential(account?.idToken, null) auth?.signInWithCredential(credential) ?.addOnCompleteListener(requireActivity()) { task -> if (task.isSuccessful) { val user = auth!!.currentUser // Firebase Firestore에서 정보 확인 checkUserInfoInFirestore(user) } else { // 로그인 실패 처리 showSnackBar("로그인에 실패하였습니다.") } } } private fun checkUserInfoInFirestore(user: FirebaseUser?) { if (user != null) { db.collection("users") // 문서 확인을 해야할 듯 .document(user.uid) .get() .addOnSuccessListener { documentSnapshot -> // name 이 널이 아니고 is_seller true or false 로 구분해야하는가 ? if (documentSnapshot["name"].toString().length >= 2 && documentSnapshot["is_seller"] == false) { findNavController().navigate(R.id.action_loginFragment_to_homeFragment) showSnackBar("로그인에 성공하셨습니다.") } else if (documentSnapshot["name"].toString().length >= 2 && documentSnapshot["is_seller"] == true) { findNavController().navigate(R.id.action_loginFragment_to_sellerMypageFragment) showSnackBar("로그인에 성공하셨습니다.") } } } else { // 정보가 없는 경우 SignupSelectFragment로 이동 findNavController().navigate(R.id.action_loginFragment_to_signupSelectFragment) } }
Kotlin
복사

멘토 답변

빌드 환경이 달라진 경우 SHA-1 key를 다시 등록해줘야 함
token id는 빌드하면 자동 생성되는 `R.string.default_web_client_id`를 사용 (local에 선언x)
디버깅 포인트 찍는 방법