안드로이드 스튜디오 구글 로그아웃을 구현하면서

NakHyun Choi·2022년 10월 4일
0

팀 프로젝트를 진행하던 중에 안드로이드 스튜디오 구글 로그인, 로그아웃을 구현하던 중에 남았던 삽집과 배운점을 간단하게 기술하려고 한다.

보통 안드로이드 스튜디오를 사용해서 구글 로그인과 로그아웃을 구현하려고 하면 보통 하나의 액티비티 안에 파이어베이스를 이용해서 로그인 버튼도 있고 로그아웃 버튼도 있다.

연습을 위해 구현한 여러 로그인, 로그아웃이다.

구글링을 해보면 대부분의 블로그에서 이런 식으로 한 액티비티 안에서 로그인과 로그아웃을 선언한다.
하지만 만약에 액티비티가 바뀐다던지 Fragment를 사용한다고 하면 위와 같은 방식으로 하면 적용이 안된다. 이유는 GoogleSignIn.getClient(this, gso);라는 녀석이 activity라는 인자를 넘겨 받거나 context 인자를 넘겨 받아야 하는데 (this 자리) Fragment를 상속 받은 클래스에 대한 인자를 넘겨주면 오류가 난다.

그에 따라서 많은 시간을 삽질했지만 실패했다. 물론 실패했다는 건 GoogleSignIn.getClient(this, gso); 이를 통해서 구글 로그아웃을 Fragment에 구현하는 것.
하지만 정답은 굉장히 심플했다.
바로 파이어베이스에서 구글 로그아웃을 지원해주는 것이었다...(xx)
FirebaseAuth.getInstance().signOut(); 이게 그 코드이다. 같은 액티비티가 아닌 Fragment에 구현하는 것도 간단했다. GoogleSignInClient mGoogleSignInClient; 이걸 선언한 액티비티의 객체를 선언해서 그 액티비티 안에 있는

public static void logout { FirebaseAuth.getInstance().signOut(); }

이 함수를 객체를 통해서 Fragment에 선언하면 해결이 된다.

굉장히 간단했던 해결방법이었다. 그런데 이를 알기까지 많은 시간이 걸렸다. 물론 혼자 한 건 아니다. 나는 실력이 부족하기 때문에 부사수 역할인데 내 사수가 파이어베이스에서 구글 로그아웃을 지원해주는 걸 알았고 객체를 선언해서 Fragment에서 사용할 수 있도록 했다. 처음에는 왜 나는 저런 생각을 못했을까, 이렇게 쉬운데 왜 나는 이렇게 시간을 많이 쓰는 걸까 프로그래밍은 내 길이 아닌 걸까? 하는 장르의 생각이 많이 들었다.
다시 생각해봤다. 내가 부족한 건 사실이고 프로그래밍적 사고가 부족한 것도 사실이다. 남들은 5분이면 해결하는 오류를 3시간, 4시간 걸려서 해결하는 게 나다. 하지만 나는 그게 좋다. 쉽지만, 객기일지 모르지만 3시간, 4시간 시간을 투자해서 해결할 때의 그 쾌감이 좋고 희열을 느낀다. 나는 부족하지만 발전을 못하는 게 아니다. 나는 젊고 열정이 있으며 배우려는 의지가 있다. 내 부족은 나를 발전시키는 원동력이 될 것이고 하루 하루 노력할 수 있는 동기가 된다. 시간이 지나고 뒤를 돌아봤을 때 지금 쓴 이 글들을 보며 나와 똑같은 생각을 가지고 고민하고 염려하는 모든 학생들에게 자신있게 말할 거다. 굉장히 잘하고 있다고 하면 된다고.

profile
SuccessiveP

0개의 댓글