본문 바로가기
ANDROID/Android 개발 이슈 & 해결

[Android] Activity Result API를 이용한 Google 로그인

by 주 녕 2021. 8. 18.
728x90

인스타그램 클론을 하면서 해당 이슈가 발생했고 내가 하고 있던 작업은 Google 로그인을 연결하는 부분이었습니다.

Firebase의 공식 문서에서도 아직 startActivityForResult()를 사용하고 있는 것을 확인할 수 있습니다!

그래서 같은 이슈가 발생한 다른 분들을 위해 해결한 코드를 남깁니다! 혹시 더 좋은 코드가 있다면 알려주세요! 🧐🧐

 

이전 포스팅에서도 작성했지만, startActivityForResult()는 deprecated된 상태입니다ㅠㅠ

 

[Android] Activity Result API : startActivityForResult() deprecated 해결

안드로이드 인스타그램 클론 프로젝트를 진행하던 중에 새로운 문제를 만났다. 오랜만에 안드로이드 스튜디오와 코틀린을 최신 버전으로 업데이트 받았는데, startActivityForResult() 메소드가 depreca

junyoung-developer.tistory.com

 

아래와 같이 코드를 작성했습니다.

변수는 클래스 내에 선언을 해두고 onCreate()에서 Activity Result API를 사용한 모습입니다!

자세한 코드 설명은 위의 포스팅을 참고해주세요!

class LoginActivity : AppCompatActivity() {
    ...
    private lateinit var activityLauncher: ActivityResultLauncher<Intent>

    override fun onCreate(savedInstanceState: Bundle?) {
        ...

        /* Google 로그인 */
        var gso = GoogleSignInOptions.Builder(GoogleSignInOptions.DEFAULT_SIGN_IN)
            .requestIdToken(getString(R.string.default_web_client_id))
            .requestEmail()
            .build()

        googleSignInClient = GoogleSignIn.getClient(this, gso)

        activityLauncher = registerForActivityResult(ActivityResultContracts.StartActivityForResult()) {
                result: ActivityResult ->
                if (result.resultCode == RESULT_OK) {
                    var task = GoogleSignIn.getSignedInAccountFromIntent(result.data)
                    try {
                        var account = task.getResult(ApiException::class.java)!!
                        firebaseAuthWithGoogle(account.idToken!!)
                        Log.d("GoogleLogin", "firebaseAuthWithGoogle: " + account.id)
                    } catch (e: ApiException) {
                        Log.d("GoogleLogin", "Google sign in failed: " + e.message)
                    }
                }
        }

        binding.googleLoginButton.setOnClickListener {
            activityLauncher.launch(googleSignInClient!!.signInIntent)
        }
    }

 

아래 화면과 같이 잘 작동하는 것을 확인할 수 있습니다!

지금은 이미 한번 로그인을 했었다가 로그아웃 한 상태라 설정해둔 계정으로 들어갔기 때문에 해당 계정으로 자동 로그인이 된 화면입니다! 처음 로그인을 시도했다면 구글 계정을 선택하고 인증하는 절차가 나옵니다!

 


참고하고 있는 강의

 

[무료] 하울의 안드로이드 인스타그램 클론 만들기 - 인프런 | 강의

이 강좌를 통해서 인스타그램 앱을 만들 수 있습니다., 피아노를 배우기 위해서는 피아노를 쳐서 몸에 감각을 익혀야 합니다. 프로그래밍도 마찬가지입니다. 일단 타이핑을 해서 감각 코딩 감각

www.inflearn.com

 

reference >

  • https://firebase.google.com/docs/auth/android/google-signin?hl=ko
728x90

댓글