개발일지

Android in A..Z - OAuth (Google) 본문

Android (안드로이드)/OAuth

Android in A..Z - OAuth (Google)

강태종 2021. 5. 4. 15:02

Google API를 사용해서 Google인증과 Google OAuth로 얻은 idToken값으로 People API를 사용하여 사용자의 다양한 정보를 얻을 수 있다.

OAuth를 사용하면 프로젝트 자체에서 회원관리 기능을 구현할 필요가 없고 Google의 AccessToken으로 사용자의 정보를 받아오기 때문에 기존 ID/Password방식보다 보안이 좋다. 또한 사용자 입장에서 한번의 클릭으로 쉽게 로그인할 수 있는 이점이 있다.


1. Google API 콘솔 프로젝트 구성 만들기

console.cloud.google.com/

 

Google Cloud Platform

하나의 계정으로 모든 Google 서비스를 Google Cloud Platform을 사용하려면 로그인하세요.

accounts.google.com


2. OAuth 동의화면 구성 만들기


3. OAuth 클라이언트 ID 등록하기 (앱 등록하기)


4. Gradle 설정하기

Dependency

apply plugin: 'com.android.application'
    ...

    dependencies {
        implementation 'com.google.android.gms:play-services-auth:19.0.0'
    }

5. Google Login 옵션 설정 및 Client 개체 설정

프로필을 얻으려면 requestProfile() 기타 Google API에 엑세스 하려면 requestScopes로 지정한다.

=> onCreate에서 실행해서 초기화한다.

val gso = GoogleSignInOptions.Builder(GoogleSignInOptions.DEFAULT_SIGN_IN)
        .requestEmail()
        .build()
        
val client = GoogleSignIn.getClient(this, gso)

6. 로그인 진행

Client 개체로부터 Intent를 받고 startactivityForResult로 실행한다.

fun onLogin() {
    val signInIntent: Intent = client.signInIntent
    startActivityForResult(signInIntent, GOOGLE_LOGIN)
}

override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) {
    super.onActivityResult(requestCode, resultCode, data)
    when(requestCode) {
        GOOGLE_LOGIN -> {
            try {
                val task = GoogleSignIn.getSignedInAccountFromIntent(data)
                val account = task.result!!

                Log.d("PASS", account.email ?: "")
            } catch (e: ApiException) {
                e.printStackTrace()
            }
        }
    }
}

 


7. 로그아웃

fun onLogout() {
    when(viewModel.type) {
        MainActivityViewModel.GOOGLE -> {
            val gso = GoogleSignInOptions.Builder(GoogleSignInOptions.DEFAULT_SIGN_IN)
                    .build()

            val client = GoogleSignIn.getClient(requireActivity(), gso)

            client.signOut().addOnCompleteListener {
                findNavController().navigateUp()
            }
        }
    }
}

* 이미 로그인된 사용자 정보 받기

GoogleSignInAccount account = GoogleSignIn.getLastSignedInAccount(this);
updateUI(account);

Git (예제코드)

github.com/KangTaeJong98/Example/tree/main/Android/OAuth

 

KangTaeJong98/Example

My Example Code. Contribute to KangTaeJong98/Example development by creating an account on GitHub.

github.com


developers.google.com/identity/sign-in/android/start-integrating

 

Android 앱에 Google 로그인 통합 시작  |  Google Sign-In for Android

자체 앱에서 Google 로그인 통합을 시작하려면 먼저 Google API 콘솔 프로젝트를 구성하고 Android 스튜디오 프로젝트를 설정해야합니다. 이 페이지의 단계가 바로 그 일입니다. 다음 단계 는 Google 로

developers.google.com

 

'Android (안드로이드) > OAuth' 카테고리의 다른 글

Android in A..Z - OAuth (Naver)  (0) 2021.05.07
Android in A..Z - OAuth (Kakao)  (0) 2021.05.05
Android in A..Z - OAuth (People)  (0) 2021.05.04
Comments