Android 인증 관리자를 통한 구글 로그인

covy·2024년 2월 23일
post-thumbnail

https://developer.android.com/training/sign-in/credential-manager?hl=ko#recommendations-link

위 링크를 가지고 구글 로그인 구현을 하고자 한다. 다른 원탭 로그인 등 방법이 있지만 인증 관리자로 이전을 명시하고 있어. 우리 프로젝트에서는 위 방법을 택했다.

먼저 구글 콘솔을 통한 Android Client ID 등록(SHA-1 지문을 가져가서 웹 상 작업만 하면 된다.), Web Application Client ID를 우리 앱상으로 가져와야한다.

사전 준비가 끝났으면,
24년 2월 24일 기준으로 위 링크를 그대로 참고하면 삽질을 오래할 것이다.
그렇기에 간단하게 구현할 수 있는 코드를 여기에 작성한다.

Implementation

아래 google 로그인을 위한 라이브러리를 추가하자

implementation "com.google.android.libraries.identity.googleid:googleid:<latest version>"

또한 androidx.credentials implementation을 따로 안했으면, 아래처럼 추가하자

implementation("androidx.credentials:credentials-play-services-auth:1.2.0")

이걸 추가 안하면 아래 에러가 발생할 것이다.
문서에 모든 프로젝트는 androidx.credentials를 1.2.0으로 포함해야한다고 명시되어 있긴 하다.

문서:
https://developer.android.com/jetpack/androidx/releases/credentials?hl=ko#1.2.0

java.lang.NoSuchMethodError: No direct method <init(Ljava/lang/String;Landroid/os/Bundle;Landroid/os/Bundle;ZZLjava/util/Set;ILkotlin/jvm/internal/DefaultConstructorMarker;)V in class Landroidx/credentials/GetCustomCredentialOption; or its super classes (declaration of 'androidx.credentials.GetCustomCredentialOption' appears in ~~~

무슨 에러인지 원인이 파악이 어려워 google issue등 많은 곳을 찾아 다녔지만 원인을 알아내지는 못했다.


이제 코드를 보자

private val googleIdOption: GetGoogleIdOption = GetGoogleIdOption.Builder()
        .setFilterByAuthorizedAccounts(true)
        .setAutoSelectEnabled(true)
        .setServerClientId(BuildConfig.GOOGLE_CLIENT_ID)
        .build()
        
private val request: GetCredentialRequest =
        GetCredentialRequest.Builder().addCredentialOption(
            googleIdOption
        ).build()

addCredentialOption 메소드 또한 잘못 명시 되어 있었다. (addGetCredentialOption()으로 명시되어 있음)

나머지 코드는 공식문서 상에서 시키는 대로 하면 된다.

이후

implementation에 대한 경고나 안내를 찾아볼 수 없었고, 문서도 동기화가 아직 안된 것으로 보인다.
관련해서 issue traker에 공식문서 수정 건의를 했고 반영되면 좋겠다~!

IssueTraker

0개의 댓글