안드로이드 (xml,java)

안드로이드 구글 Auth(소셜로그인)에 관하여

jiminii 2022. 8. 31. 23:21
728x90

나중에 이걸로 고생할거같아서 나중에 내가 알아볼 수 있도록 올려두려한다.

본 게시물의 내용은 정확한 이론보다는 필자가 이해한 대로 서술하겠다.

 

우선 Auth는 크게 2가지 방식을 사용 할 수 있는데 firebase를 이용하는 방법과 아닌 방법인데 하나씩 설명하겠다

1.기초방식

기본적으로 앱 -  웹서버 - 데이터베이스

구조로 되어있는 베이직한 프로젝트에서 사용할 수 있겠는데 

우선 구글 클라우드 콘솔에서 프로젝트를 등록하고 sha-1 키를 이용하여 클라이언트(pc)를 등록한다  그러면 앱에서 구글로그인이 가능해지는데 그런 뒤 로직은 대략 이렇다

 

  1. 앱에서 구글로그인 (토큰 획득)
  2. 토큰을 서버로 전송
  3. 서버에서 해당토큰으로 유저정보 획득
  4. 유저정보로 앱과 db의 중계자 역할

2.firebase

앱 - 파이어베이스 - 서버 or db

구조의 프로젝트에서 써야하는데 구글 클라우드 콘솔에 등록까지는 똑같으나 등록할 때 사용한 sha-1키를 이용해 파이어베이스 프로젝트에서도 등록을 해준 뒤 json파일을 받아야 한다.

1번 방식과의 큰 차이점은 유저데이터가 파이어베이스에 생성이 된다는 것이다.

 

내가 이해하기 쉽게 써놓자면 파이어베이스가 싱글톤 패턴으로 유저정보(토큰)를 가지고있다고 생각 할 수 있을 것 같다

 

진행하는 프로젝트에서 1번에서 애를먹은 이유

앱 - 파이어베이스 - 웹서버 - 누구 스피커

구조로 되어있는 현재 진행중인 프로젝트에서는 무조건 firebase를 사용해야했었다....

 

현재 프로젝트에서는 파이어베이스의 firestore를 db로 쓰고있어서 쉽게 보면

앱 - db - 웹서버 - 누구 스피커

구조라고 볼 수 있는데

 

firestore 문서 구조가

[프로젝트 이름] > {유저 이메일} > [각각 기능] > {기능별 데이터}

로 되어있어 앱에서 로그인 후 이메일을 얻어서 올리는 것은 가능했으나 nugu 스피커와 db를 연결해주는 웹서버에서 1번방식으로 했을 때 원하는 유저의 이메일을 얻을 방법을 찾지 못했다.

 

그러나 2번 방식으로 진행을 하면 사용자 정보가 파이어베이스에 올라가므로 웹서버에서 파이어베이스에 접근해 유저 이메일을 얻을 수 있다.

 

누구쪽 서버에서도 구글 oauth를 쓰는걸로 하여서 굳이 파이어베이스 오어스를 사용하지 않아도 괜찮게 되었다.

 

그러나 앱을 릴리즈 하려는 상황에서 문제가 발생하였는데

구글 클라우드 콘솔에 기존에 디버그 키와 릴리즈 키를 등록 해 주었으나 제대로 동작하지 않았고 구글링 결과 릴리즈 키를 구글 콘솔에서 프로젝트 별로 생성하여 받아올 수 있다는 것을 알게되어 해당 sha-1 키 값을 받아와 구글 클라우드 콘솔에 등록해주었더니 내부 테스트 버전에서 정상적으로 앱이 동작하는것을 확인 하였다.

 

애먹었던 부분

  1. .sha-1 키 등록 : 파이어베이스와 구글 클라우드 콘솔에 키를 이용해 클라이언트를 pc에서 등록하면 디버그 버전의 앱에선 다른 pc에서 로그인기능을 이용하려면 해당 pc에서도 등록을 해야한다는것을 몰라서 애를 먹었다.
  2. 오류 해결 : 각각의 방식에서 오류가 났을 때 뜨는 오류코드가 같지만 발생이유가 추상적이고 앞서말한 sha-1 키 등록과 같은 이유인지 auth문제인지 등등 개인적으로 문제 발생 이유를 특정하기가 힘들었다.
  3. 릴리즈 키 생성부분이 난해하였으나 구글 콘솔에서 생성해주는 키를 사용하는 것으로 변경하여 해결 하였다.

참고자료

https://jhg3410.tistory.com/m/entry/android-google-login-apioauth2-%EC%97%90-%EB%8C%80%ED%95%9C-%EA%B3%A0%EC%B0%B0

 

google login api(oauth2) 에 대한 고찰

진행 중인 프로젝트에서 google login을 구현하기로 결정되었다. 자연스럽게 나의 파트가 되었고 이를 구현하기 위한 노력들을 정리.. 음 먼저 간단하게 정리를 하자면 로직은 이렇다고 이해 중이

jhg3410.tistory.com

https://chobodogfootruler.tistory.com/30

 

3. 개초보도 할 수 있는 Firebase 인증(Google 로그인, 로그아웃, 회원탈퇴)

어제는 Firebase를 안드로이드와 연결하였다. 오늘은 연결된 Firebase를 이용해, Google로그인을 만들어 보려고 한다. 연결을 하지 않았다면, 2019/11/02 - [혼자공부방/안드로이드 공부] - 1. 개초보도 할

chobodogfootruler.tistory.com

 

728x90