민팽로그

구글 로그인 테스트: 안드로이드에서 백엔드 서버로 인증 본문

📚소소한 스터디

구글 로그인 테스트: 안드로이드에서 백엔드 서버로 인증

민팽 2021. 8. 21. 08:17

https://github.com/googlesamples/google-services

 

GitHub - googlesamples/google-services: A collection of quickstart samples demonstrating the Google APIs for Android and iOS

A collection of quickstart samples demonstrating the Google APIs for Android and iOS - GitHub - googlesamples/google-services: A collection of quickstart samples demonstrating the Google APIs for A...

github.com

처음 시작한다면 sample 문서 파일을 잘 이해하기 위해 위 깃허브에서 로그인 구현 sample을 다운받아 코드를 뜯어보는 것이 도움이 될 듯 하다.

 

sample 사용 문서

Android용 로그인 시도  |  Google Sign-In for Android  |  Google Developers

 

Android용 로그인 시도  |  Google Sign-In for Android  |  Google Developers

보고 우리의 안드로이드 샘플 응용 프로그램을 사용하는 방법을 작품에 로그인-, 또는 기존의 응용 프로그램에 추가 로그인을 . 필수 : 최신 버전의 안드로이드 스튜디오 와 구글 플레이 서비스

developers.google.com

 

 

 


 

안드로이드 구글 로그인: 백엔드 서버로 인증

위 샘플과 거의 동일한 코드를 자신의 프로젝트에 넣어주게 된다.

 

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

 

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

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

developers.google.com

위 문서를 따라하며 통합시작, 로그인 추가 까지는 안드로이드에서만 구글 로그인을 구현하는것과 동일하므로 쭉쭉 진행해주면 된다.

 

통합시작, 로그인 추가 작업이 완료되었다면 구글 클라우드 플랫폼 콘솔에 접속한다.

 

OAuth 2.0 클라이언트 ID 만들기

1. 프로젝트 생성완료 후 해당 프로젝트로 이동

 

2. OAuth 동의 화면 구성

- 시간이 지나면서 내용이 계속 달라지기 때문에 자세히 기록하지는 않겠지만 대충 앱 이름, 사용자 지원 이메일 정도가 필요했다.

- 범위 설정에서는 email, profile, openid 정도를 넣어준다.

 

3. 사용자 인증 정보 구성

- 안드로이드에서 로그인 한 계정에서 백엔드와 주고받을 IdToken을 받기 위해서는 사용자 인증 정보가 필요하다.

- OAuth 클라이언트 ID는 웹 애플리캐이션 유형, Android 유형으로 각각 만들어준다.

 

웹 애플리케이션의 클라이언트 ID

- 승인된 리디렉션 URL에는 허용할 리디렉션 URI를 입력해준다.

ex. 구글 로그인 페이지로 리디렉션: 도메인 주소 + /login/oauth2/code/google

 

Android의 클라이언트 ID

- 안드로이드 프로젝트의 SHA-1 키가 필요하다.

- Terminal에 gradlew signingReport 입력 후 Ctrl+Enter 를 누르면 SHA-1 키를 받을 수 있다.

 

구글 계정의 IdToken을 위한 코드 작성

서버 측 액세스 활성화  |  Google Sign-In for Android  |  Google Developers

 

서버 측 액세스 활성화  |  Google Sign-In for Android  |  Google Developers

이전의 로그인 추가 절차를 사용하면 앱이 클라이언트 측에서만 사용자를 인증합니다. 이 경우 사용자가 앱을 적극적으로 사용하는 동안에 만 Google API에 액세스 할 수 있습니다. 서버가 사용자

developers.google.com

백엔드 서버로 인증  |  Google Sign-In for Android  |  Google Developers

 

백엔드 서버로 인증  |  Google Sign-In for Android  |  Google Developers

백엔드 서버와 통신하는 앱 또는 사이트에서 Google 로그인을 사용하는 경우 서버에서 현재 로그인한 사용자를 식별해야 할 수 있습니다. 안전하게 하려면 사용자가 성공적으로 로그인한 후 HTTPS

developers.google.com

 

1. Builder를 다음과 같이 작성

//계정 기본 정보, 인증코드, 토큰 요청
        GoogleSignInOptions gso = new GoogleSignInOptions.Builder(GoogleSignInOptions.DEFAULT_SIGN_IN)
                .requestScopes(new Scope(Scopes.DRIVE_APPFOLDER)) //인증코드를 얻기 위해 필요한 코드
                .requestServerAuthCode(serverClientId) //인증코드를 얻기 위해 필요한 코드 : 토큰과 교환할 수 있음
                .requestEmail()
                .requestIdToken(serverClientId) // 토큰 요청
                .build();

* 클라이언트 ID를 넘겨줘야함*

 

2. res/values/string.xml 파일에 클라이언트 ID 입력

<string name="server_client_id">발급받은 웹 클라이언트 ID</string>

 

3. 인증코드, 토큰 등 정보 가져오기

//계정 정보 가져오기
String personName = account.getDisplayName();
String personGivenName = account.getGivenName();
String personFamilyName = account.getFamilyName();
String personEmail = account.getEmail();
String personId = account.getId();
Uri personPhoto = account.getPhotoUrl();
String serverAuthCode = account.getServerAuthCode(); // 인증코드
String idToken = account.getIdToken();  //토큰

 

 

이렇게 얻은 토큰을 post 메소드를 통해 백엔드 서버로 보내면 된다.

 

 

구현 결과

 

 

 


 

 

 

OAuth 이해를 위해 참고 사이트

 

OAuth 2.0을 사용하여 Google API에 액세스  |  Google ID 플랫폼  |  Google Developers

 

OAuth 2.0을 사용하여 Google API에 액세스  |  Google ID 플랫폼  |  Google Developers

참고 : Google의 OAuth 2.0 구현의 사용이 적용됩니다 OAuth는 2.0 정책 . 구글 API는 사용 하여 OAuth 2.0 프로토콜 인증 및 권한 부여를 들어. Google은 웹 서버, 클라이언트 측, 설치 및 제한된 입력 장치 애

developers.google.com

 

Comments