회사에서 카카오와 네이버 의외에 구글로그인 기능도 추가 개발을 요구하여 구글 기능을 붙이게 되면서 글을 쓰게 되었습니다.
구글로그인은 예전에 해보고 간만에 해봐서 조금 구글링을 하여 작업을 진행했습니다.
일단 먼저 해줘야하는 Firebase에 앱 등록이 있는데 그건 넘어가도록 하겠습니다.
등록 후 구글 API에 들어가서 사용할 키를 생성해줘야합니다.(클릭)
1. 메뉴 > API 및 서비스 > 사용자 인증 정보 클릭
2. 사용자 인증정보 만들기 > OAuth 클라이언트 ID 선택
3. 웹 어플리케이션을 선택
4. 아래와같이 뭐 별다른거 없이 만들기
5. 웹 어플리케이션 다음 Android 어플리케이션 추가를 히야한다. 다음은 위와 다르게 패키지명과 SHA-1인증서 디지털 지문이 필요하다. 지문을 구하는 방법은 밑에서 설명할 예정이며, 등록시 클라이어인트 ID가 생성된다.
6. SHA-1 인증서 디지털 지문을 추출하는 방법은 Android Studio 우측 상단에 코끼리 모양 클릭 -> signingReport클릭 -> 하단에서 SHA1 이 추출된다. 여기서 디버그용과 릴리즈용이 각각 추출되므로 실 배포를 한다면 두가지 키를 다 등록해야할것이다.
위와 같이 하였다면 구글로그인 개발이 준비가 되었다.
이제부터 구글 로그인에 대한 작업을 진행하는데 무작정 구글링하여 개발하니 기능들이 다 Deprecated 되어있었다.
그리하여 좀더 알아본 결과 아래와같이 발견할수 있었다.(관련링크)
결국 Android Credential Manager 을 이용하여 개발을 진행하여야 하며 관련 샘플코드는 아래와같고 개발 공식문서에도 잘 나와있다
1. 구글 로그인 관련 라이브러리 추가
const val google_login_credentials = "androidx.credentials:credentials:${Version.google_login_credentials}"
const val google_login_services = "androidx.credentials:credentials-play-services-auth:${Version.google_login_credentials}"
const val google_login_googleid = "com.google.android.libraries.identity.googleid:googleid:${Version.google_login_googleid}"
const val google_login_credentials = "1.2.2"
const val google_login_googleid = "1.1.0"
2. 구글 로그인 개발
val credentialManager = CredentialManager.create(requireContext())
val googleIdOption = GetGoogleIdOption.Builder()
.setFilterByAuthorizedAccounts(false) //구글계정 유무체크
.setServerClientId("") //웹클라이언트 키값
.setAutoSelectEnabled(true) //자동 로그인 활성화
.build()
val request = GetCredentialRequest.Builder()
.addCredentialOption(googleIdOption)
.build()
viewLifecycleOwner.lifecycleScope.launch {
runCatching {
val result = credentialManager.getCredential(requireContext(), request)
when(val data = result.credential) {
is CustomCredential -> {
if(data.type == GoogleIdTokenCredential.TYPE_GOOGLE_ID_TOKEN_CREDENTIAL) {
val googleIdTokenCredential = GoogleIdTokenCredential.createFrom(data.data)
Logger.e("data.type : ${googleIdTokenCredential.id}")
Logger.e("data.type : ${googleIdTokenCredential.displayName}")
Logger.e("data.type : ${googleIdTokenCredential.profilePictureUri.toString()}")
}
}
}
}.onFailure { it ->
Logger.e("Google Login Error : $it")
}
}
이렇게 구글로그인후 가져올 수 있는 데이터는 아래와같다(전화번호는 있지만 들어오지 않는다)
그리고 개발하다가 Developer console is not set up correctly 라는 에러를 발견한다면 키를 잘못 사용하거나 설정이 잘못된것이다
키는 안드로이드 어플리케이션이 아닌 웹 어플리케이션의 키로 등록을 하여야한다.
'프로그램 > Android' 카테고리의 다른 글
구글스토어 다국어 스토어설정 (1) | 2024.10.07 |
---|---|
캠월드 개발일지 2(디자인가이드 적용) (0) | 2024.09.24 |
[캠월드] 캠월드 개발일지 1(멀티모듈 적용) (1) | 2024.09.12 |
안드로이드 google-services.json을 여러개 사용하기 (0) | 2022.02.21 |
안드로이드 해시키(Hash Key) 추출 (0) | 2022.02.17 |