Google Play Console의 메세지함에서 Google Sign-in API에서 인증관리자로 이전하라는 알림이 왔다. 앱이 Google 계정으로 로그인 기능을 사용하고 있었기에 이 코드를 인증 관리자로 대응이 필요하다. 앱에서 Google 계정으로 로그인 기능 사용할 때 java 코드로 되어있는 예제코드가 잘 없기에 여기 기록해 둔다.
관련 구글 문서
관련된 구글 문서는 다음과 같다.
종속 항목 선언
모듈 build.gradle 파일에서 인증관리자 최신 버전을 사용하여 종속 항목을 선언한다.
// 인증 관리자
implementation "androidx.credentials:credentials:1.5.0-alpha05"
implementation "androidx.credentials:credentials-play-services-auth:1.5.0-alpha05"
implementation "com.google.android.libraries.identity.googleid:googleid:1.0.0"
코드작성
인증관리자 구성 및 초기화한다. 로그인 흐름을 시작하고 로그인 성공 시 onResult에서 실패 시 onError에서 로그인 관련 처리를 수행하면 된다.
인증옵션 초기화에서는 GetGoogleOption으로 Google ID 토큰을 가져오게 된다. setAutoSelectEnable로 자동로그인을 활성화한다.
// 인증 관리자 구성
Context context = getApplicationContext();
CredentialManager credentialManager = CredentialManager.create(context);
// 인증옵션 초기화
GetGoogleIdOption getGoogleIdOption = new GetGoogleIdOption.Builder()
.setFilterByAuthorizedAccounts(false) //구글계정 유무체크
.setServerClientId(getString(R.string.default_web_client_id)) //웹클라이언트 키값
.setAutoSelectEnabled(true) //자동 로그인 활성화
.build();
// 요청 생성
GetCredentialRequest getCredRequest = new GetCredentialRequest.Builder()
.addCredentialOption(getGoogleIdOption)
.build();
// 로그인 흐름 시작
CredentialManagerCallback<GetCredentialResponse, GetCredentialException> credentialManagerCallback = new CredentialManagerCallback<GetCredentialResponse, GetCredentialException>() {
@Override
public void onResult(GetCredentialResponse getCredentialResponse) {
// Handle success
handleSignIn(getCredentialResponse);
}
@Override
public void onError(@NonNull GetCredentialException e) {
// Handle errors
handleFailure(e);
}
};
credentialManager.getCredentialAsync(
context,
getCredRequest,
new CancellationSignal(),
Executors.newSingleThreadExecutor(),
credentialManagerCallback
);