2021. 11. 4. 11:58ㆍAndroid
클라이언트 : android studio
백엔드 : spring
데이터베이스 : postgresql
인증토큰(구글로그인) : firebase
이렇게 세가지 스택을 가지고 안드로이드 앱을 만드는 과정 중에 파이어베이스에서 생성한 프로젝트의 토큰 값을 받아서 검증시에 에러가 발생하여 이를 해결하는 과정을 기술한다.
인증 토큰 값을 가져오는 방식으로 웹과 앱 상에서 받아오는 두가지 방법으로 진행해봤다.
1) 첫번째 문제 상황 (웹에서 발급 받은 토큰을 통한 권한 인증)
letsGetToken.html 을 통해서
firebaseConfig json 데이터로 서버에 등록한 후 발급 받은 키 값을 통해 스웨거에서 확인을 해봤지만..
토큰 검증중 문제가 발생했습니다. 라고 500에러가 발생했다.
스프링에서 로그를 확인해보니 토큰 값을 잘받아오지만 deny가 나는 상황이였다.
2) 두번째 문제 (앱에서 받은 토큰을 통해 권한 인증)
두 번째 방법으로 안드로이드 앱에서 토큰을 직접 받아와서 시도해봤다.
로그로 찍은 토큰 값을 스웨거에 입력했지만 첫번째 방식과 마찬가지로 동일한 500에러가 발생했다.
해결과정
1) 앱에서 권한 있는 토큰 값 받기
500에러 이기 때문에 서버에 설정된 파이어베이스의 권한 값들이 잘못되었다고 판단하여 파이어베이스에서 어드민 키를 재발급 받아서 서버 코드를 수정해주는 과정을 진행했다.
일단 파이어베이스 콘솔로 들어서가서 프로젝트 설정 > 서비스 계정으로 간 다음 새 비공개 키 생성을 해주었다.
그 후 생성된 비공개키의 값을 서버의 application.yml 파일에 firebase 부분을 수정해주었다.(없을 경우 추가해야함)
해당 과정을 마치고 다시 앱에서 직접 토큰 값을 받아서 스웨거를 통해 확인해보니 접근이 되었다. (해결)
2) 웹에서 권한있는 토큰 받기
위 과정을 통해 앱에서 받은 토큰 값은 사용이 되지만 웹에서 발급 받은 토큰은 또 다시 500에러가 발생하였다.
이경우 다시 파이어베이스 콘솔의 진행중인 프로젝트에서 프로젝트 설정 > 일반에서 앱 추가를 통해서 웹 또한 등록해줘야지 웹에서도 토큰을 발급 받을 수가 있다.
그렇게 생성해준 firebaseConfig 코드를 서버에서 작성한 html 파일에 적용해주었다.
이렇게 코드값을 수정해주고 다시 웹에서 받은 토큰을 통해 스웨거로 확인해보면 더 이상 검증에러가 발생하지 않는다.
문제의 원인
문제의 원인은 파이어베이스에서 프로젝트를 새로 만들고 서버와 연동을 하기 위해서는 서버에 변경된 프로젝트의 검증키로 수정해줬어야 했는데 그러지 않았기에 검증키가 맞지 않아 발생한 문제였다.
'Android' 카테고리의 다른 글
[안드로이드] 스택에 쌓인 Activity 제거(finish()와 FLAG_ACTIVITY_CLAER_TOP) (0) | 2021.11.17 |
---|