본문 바로가기
안드로이드/Compose

[Android][Kotlin] 구글 로그인

by jinwo_o 2024. 11. 1.
순서대로 사이트에 설명된 내용을 잘 읽고 따라 하시면 잘 진행될 것입니다.

 

1. Firebase Console 을 사용하여 Firebase 추가 (1단계, 2단계)

 

Android 프로젝트에 Firebase 추가  |  Firebase for Android

이 페이지는 Cloud Translation API를 통해 번역되었습니다. 의견 보내기 Android 프로젝트에 Firebase 추가 컬렉션을 사용해 정리하기 내 환경설정을 기준으로 콘텐츠를 저장하고 분류하세요. 기본 요건 A

firebase.google.com

  • 디버그 서명 인증서 SHA-1 : 우측 상단 Gradle(코끼리) → Execute Gradle Task → gradle signingReport
> Task :app:signingReport
Variant: debug
Config: debug
Store: ~/.android/debug.keystore
Alias: AndroidDebugKey
MD5: A5:88:41:04:8D:06:71:6D:FE:33:76:87:AC:AD:19:23
SHA1: A7:89:E5:05:C8:17:A1:22:EA:90:6E:A6:EA:A3:D4:8B:3A:30:AB:18
SHA-256: 05:A2:2C:35:EE:F2:51:23:72:4D:72:67:A5:6C:8C:58:22:2A:00:D6:DB:F6:45:D5:C1:82:D2:80:A4:69:A8:FE
Valid until: Wednesday, August 10, 2044
  • Firebase Console 에 등록한 Firebase 가 Google Cloud 에 자동 생성된다. (API 및 서비스 → 사용자 인증 정보)
 

Google 클라우드 플랫폼

로그인 Google 클라우드 플랫폼으로 이동

accounts.google.com

 

2. Android Project 에  Firebase 추가 (3단계)

 

Android 프로젝트에 Firebase 추가  |  Firebase for Android

이 페이지는 Cloud Translation API를 통해 번역되었습니다. 의견 보내기 Android 프로젝트에 Firebase 추가 컬렉션을 사용해 정리하기 내 환경설정을 기준으로 콘텐츠를 저장하고 분류하세요. 기본 요건 A

firebase.google.com

 

3. Google Play 서비스 추가

 

Android 앱에 Google 로그인 통합 시작  |  Authentication  |  Google for Developers

이 페이지는 Cloud Translation API를 통해 번역되었습니다. 의견 보내기 Android 앱에 Google 로그인 통합 시작 컬렉션을 사용해 정리하기 내 환경설정을 기준으로 콘텐츠를 저장하고 분류하세요. 경고: A

developers.google.com

 

4. Android Project 에 Google 로그인 통합

 

Android 앱에 Google 로그인 통합  |  Authentication  |  Google for Developers

이 페이지는 Cloud Translation API를 통해 번역되었습니다. 의견 보내기 Android 앱에 Google 로그인 통합 컬렉션을 사용해 정리하기 내 환경설정을 기준으로 콘텐츠를 저장하고 분류하세요. 경고: Android

developers.google.com

  • Google 로그인 및 GoogleSignInClinet 객체 구성
    • web_client_id 는 Google 클라우드 플랫폼에 등록된 OAuth 2.0 클라이언트 ID 에 있습니다. (Android client 아닙니다)
private fun getGoogleClient(context: Context): GoogleSignInClient {
    val googleSignInOption = GoogleSignInOptions.Builder(GoogleSignInOptions.DEFAULT_SIGN_IN)
        .requestIdToken(getString(context, R.string.web_client_id))
        .requestEmail()
        .build()

   return GoogleSignIn.getClient(context, googleSignInOption)
}
  • Public Methods (참고)
 

GoogleSignInOptions.Builder  |  Google Play services  |  Google for Developers

com.google.android.gms.dtdi

developers.google.com

  • 로그인 과정 시작
 

Android 앱에 Google 로그인 통합  |  Authentication  |  Google for Developers

이 페이지는 Cloud Translation API를 통해 번역되었습니다. 의견 보내기 Android 앱에 Google 로그인 통합 컬렉션을 사용해 정리하기 내 환경설정을 기준으로 콘텐츠를 저장하고 분류하세요. 경고: Android

developers.google.com

@Composable
fun GoogleLogin() {
    val context = LocalContext.current
    val googleSignInClient = getGoogleClient(context)
    val googleLoginForResult = rememberLauncherForActivityResult(
        contract = ActivityResultContracts.StartActivityForResult()
    ) { result ->
        if (result.resultCode == Activity.RESULT_OK) {
            val task: Task<GoogleSignInAccount> =
                GoogleSignIn.getSignedInAccountFromIntent(result.data)

            val account = task.result
            Log.i("GoogleLogin", account.idToken.toString())
        } else {
            Log.e("GoogleLogin", result.toString())
        }
    }

    Button(onClick = { googleLoginForResult.launch(googleSignInClient.signInIntent) }) {
        Text("구글 로그인")
    }
}