모바일 앱들을 보면 구글로 로그인!(혹은 카카오 / 네이버 등등) 과 같은 소셜 로그인을 지원하는 경우가 많은데
오늘은 이 중 구글 로그인을 구현해볼겁니다.
일단 Firebase 에서 프로젝트를 만들고(로그인 기능을 넣을것이기 때문에 SHA -1 인증서가 필요합니다)
앱과 프로젝트를 연동해줍니다. 그 후 google-services.json 을 app 수준의 디렉토리에 넣어주면 됩니다.
이제 종속성을 추가해줍시다.
Project Level 의 build.gradle 에 아래 구문을 작성하고
id("com.google.gms.google-services") version "4.4.1" apply false
App Level 의 build.gradle 에 gms 를 추가해줍니다.
//libs.versions.toml
[versions]
playServicesAuth = "21.2.0"
[libraries]
play-services-auth = { module = "com.google.android.gms:play-services-auth", version.ref = "playServicesAuth" }
//build.gradle(app)
plugins {
id("com.google.gms.google-services")
}
dependencies {
implementation(libs.play.services.auth)
}
이제 로그인하는 과정을 구현해봅시다.
val signInOptions = GoogleSignInOptions.Builder(GoogleSignInOptions.DEFAULT_SIGN_IN)
.requestIdToken(getString(R.string.default_webclient_id))
.requestEmail()
.build()
val googleSignInClient = GoogleSignIn.getClient(this@MainActivity, signInOptions)
val intent = googleSignInClient.signInIntent
위 코드와 같이 googleSignInIntent 를 만들어서 startActivityForResult 나 Compose 의 ActivityResultLauncher 를 이용해 실행시켜주고
private var auth: FirebaseAuth
{activityResult ->
if (auth == null){
auth = FirebaseAuth.getInstance()
}
val data = activityResult.data
// onActivityResult 에서 처리한다면 data:Intent? 를 그대로 사용하시면 됩니다
val signInTask : Task<GoogleSignInAccount> = GoogleSignIn.getSignedInAccountFromIntent(data)
try {
val account = signInTask.getResult(ApiException::class.java)
val credential = GoogleAuthProvider.getCredential(account.idToken, null)
auth.signInWithCredential(credential)
.addOnCompleteListener {authTask->
if (authTask.isSuccessful) {
val id = "${account.id}"
val token = "${account.idToken}"
val email = "${account.email}"
val user = auth.currentUser
}
}
}
catch (e: ApiException){
e.printStackTrace()
}
}
ActivityResult 를 위와 같이 처리해 줌으로써 로그인 결과(유저 정보)를 확인할 수 있습니다.
'Android > Kotlin' 카테고리의 다른 글
[Compose] Renderer Issue? Missing classes? in release mode (0) | 2024.09.03 |
---|---|
Jetpack Compose 에서 기존 View 를 사용하고자 한다면! (0) | 2024.05.27 |
LiveData 의 postValue() vs setValue() 의 차이점, 언제 사용해야 할까? (0) | 2024.03.29 |
Android SpeechRecognizer 를 이용해 음성 인식 구현하기 (1) | 2024.02.29 |
Android 배워보자 Compose! -(5) Scaffold / BottomNavigation (1) | 2024.02.14 |