[안드로이드] 구글 로그인 구현 중..

안드로이드에서 구글 로그인을 구현 중입니다.

 

Firebase을 통해 구글 로그인을 지원할 수도 있던데. 찾아보니 파이어베이스 서버에 유저 정보가 저장되는 것 같아 그냥 구글 기본 함수?를 이용해 로그인을 구현 중입니다.

 

로그인 까지는 쉬운데.. 로그인 후에 세션을 알아서 관리하라고 하네요;;

 

카톡 로그인, 애플 로그인가지 구현한 상태에서 지금 느낌 점은..

카톡 로그인이 정말 구현이 잘 되어있는 거였구나 싶습니다.

 

어쨋든.. 구글 로그인에선 안드로이드 앱과 서버의 로그인 인증 세션을 연동해야 합니다.

 

session_start();
echo "session_id = ".session_id();

php서버에서 세션을 시작하고.. 안드로이드 앱에서 request를 여러번 보내면서 테스트해봤습니다.

신기하게도 세션ID가 유지가 되더라구요.

 

OkHttp를 사용중인데 찾아보니 쿠키 설정하는 부분이 있네요.

//영속적 쿠키 설정//
ClearableCookieJar cookieJar = new PersistentCookieJar(new SetCookieCache(), new SharedPrefsCookiePersistor(context));
builder.cookieJar(cookieJar);

잘은 몰라도 이 부분 때문에 알아서 쿠키가 관리되는 것 같습니다.

 

흠..

 

대충 구현 방향을 생각해보겠습니다.

 

1. 앱에서 구글 로그인 성공

2. 앱에서 얻은 idToken을 서버로 보냄

3. 서버에서 idToken 유효성 검사, $client->verifyIdToken($idToken)

4. 서버에서 idToken이 유효하다면 bin2hex(openssl_random_pseudo_bytes(64)) 함수를 이용하여

accessToken과 refreshToken을 생성함

5. 생성한 accessToken과 refreshToken은 서버에서는 세션(파일)에 저장하여 추후 검증에 사용될 수 있도록 함. 그리고 그 acessToken과 refreshToken은 앱으로 response를 보냄

6. 앱에서는 accessToken을 refreshToken을 메모리가 아닌 파일에 저장하여 추후 검증에 사용함

7. 애플 로그인과 유사하게.. accessToken은 하루가 지나면 refreshToken을 이용하여 갱신이 되도록 하자. accessToken의 발급 시간도 따로 관리해야겠다.

 

 

이렇게 하면.. 같은 계정의 사용자라도 여러 기기에서 동시에 로그인할 수 있습니다.

왜냐하면 단말마다 다른 session id를 가질 것이고.. 서로 다른 세션 파일에 인증 정보가 저장되고 검증되기 때문입니다.

 

 

기타

구글 유저는 회원 탈퇴 후 재가입을 해도 userId는 똑같은 것을 부여받네요. 애플과 같은 방식입니다.

참고로 카카오 유저는 기본 설정으로는 회원 탈퇴 후 재가입하면 다른 userId를 부여받습니다.

작성자

Posted by 드리머즈

관련 글

댓글 영역