인스타그램 클론을 하면서 해당 이슈가 발생했고 내가 하고 있던 작업은 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
댓글