728x90
반응형

현재 우리 회사에서 서비스 하고있는 플랫폼엔 모두 Oauth가 적용되어있다.

 

최근 런칭한 서비스를 QA 돌리는중에, 로그아웃하니 처음 연결했던 구글 아이디로만 로그인한다는 QA가 있어서

 

아차 싶었다.

 

항상 Oauth를 사용해서 로그인 할때는, 해당 Oauth sdk(위젯)에서 로그아웃을 실행해줘야한다.

 

룰루랄라 해당 기능에서 로그인 기능을 만들어 놓은 함수

 

public void googleOauthSignOut() {
    try {
    mGoogleSignInClient.signOut()
            .addOnCompleteListener(this, task -> {
                mAuth.signOut();
            });
    gsa = null;
    }catch (Exception e){
        Log.e("signOut error :::;",e.toString());
    }
}

를 import 해서 사용했더니

 

Attempt to invoke virtual method 'android.os.Looper android.content.Context.getMainLooper()' on a null object reference

 

해당 에러가 났다.

 

전역으로 context를 관리하는데도, 가끔 nullpointException이 발생한다.

 

찾아보니 onCreate에서 객체 선언을 해줘야 한다는 글이 있어서, 해당 기능을 사용하는 Activity onCreate에서 

 

GoogleSignInOptions googleSignInOptions = new GoogleSignInOptions.Builder(GoogleSignInOptions.DEFAULT_SIGN_IN)
        .requestIdToken(getString(R.string.default_web_client_id))
        .requestEmail()
        .build();

mGoogleSignInClient = GoogleSignIn.getClient(this, googleSignInOptions);

객체 선언을 해줬더니 정상 작동했다.

 

참고로 로그아웃할때는 항상

 

instance초기화(fcm / oAuth / local db 등등)을 잊지 말아야하는데, 이번 QA 검수 넣은 apk엔 oAuth 관련 초기화가 빠져있었다.

728x90
반응형

+ Recent posts