2016-09-21 3 views
0

는 구글 DOCX에 따르면 우리는 두 가지 방법Google LogIn에서 로그 아웃하는 방법은 무엇입니까?

  • SingOut이
  • RevokeAccess

나는이 방법을 하나

초 구글 등의 방법을 제공해야합니다

public void revokeAccess() { 
    GoogleSignInOptions gso = getGoogleSignInOptions(); 
    mGoogleApiClient = getGoogleApiClient(gso); 
    if (mGoogleApiClient.isConnected()) { 
     Auth.GoogleSignInApi.revokeAccess(mGoogleApiClient).setResultCallback(
       new ResultCallback<Status>() { 
        @Override 
        public void onResult(@NonNull Status status) { 
         Logger.log(GoogleImplementation.class, "signOut:onResult:" + status, Logger.ERROR); 
        } 
       }); 
    } else { 
     Logger.log(GoogleImplementation.class, "GoogleApiClient is not connected yet.", Logger.ERROR); 
    } 
} 

그러나 매번 호출하려고 할 때마다 오류가 발생했습니다.

GoogleApiClient는 아직 연결되지 않았습니다. 나는 따라서이 객체를 저장하는 방법을 내가 할 수있는 상담자

LogIn()을 만든 동일한 개체에 revokeAccess()를 호출 할 필요가 이해

나는 지금까지 이것에 the same issue on stack하고 따라 발견? 아니면 내가 그 결론을 오해하니?

내가 뭘 잘못하고 있니?

편집

@NonNull 
public GoogleApiClient getGoogleApiClient(GoogleSignInOptions gso) { 
    return new GoogleApiClient.Builder(context) 
      .enableAutoManage(activity, listenerConnection) <----- 
      .addApi(Auth.GOOGLE_SIGN_IN_API, gso) 
      .build(); 
} 

각기 다른 활동에서 편집 2

public void revokeAccess() { 
    GoogleSignInOptions gso = getGoogleSignInOptions(); 
    mGoogleApiClient = getGoogleApiClient(gso); 
    if (mGoogleApiClient.isConnected()) { 
     Auth.GoogleSignInApi.revokeAccess(mGoogleApiClient).setResultCallback(
       new ResultCallback<Status>() { 
        @Override 
        public void onResult(@NonNull Status status) { 
         Logger.log(GoogleImplementation.class, "signOut:onResult:" + status, Logger.ERROR); 
        } 
       }); 
    } else { 
     mGoogleApiClient.connect(); 
     Logger.log(GoogleImplementation.class, "GoogleApiClient is not connected yet.", Logger.ERROR); 
     Auth.GoogleSignInApi.revokeAccess(mGoogleApiClient).setResultCallback(
       new ResultCallback<Status>() { 
        @Override 
        public void onResult(@NonNull Status status) { 
         Logger.log(GoogleImplementation.class, "signOut:onResult:" + status, Logger.ERROR); 
        } 
       }); 
    } 
} 

답변

0

, 당신은 당신의 GoogleApiClient를 연결해야합니다, 그것은 활동을 통해 연결 상태를 유지하지 않습니다.

+0

당신은 하나의 활동에 로그인 한 다음 다른 사람에게 가서 mGoogleApiClient.connected()를 만들어야한다는 것을 의미합니까? –

+0

정확히,하지만 일단 당신이 당신의 계정을 선택하고 나면 UI에 표시된 어떤 것도 automaticcaly를 연결하지 않고 automanage thne를 사용하여 이것을 할 수 있습니다. –

+0

내 질문을 편집했습니다. '<------'라고 표시된 줄이 있는데,'mGoogleApiClient.connected()'대신 사용해야한다는 뜻입니까? 하지만 난 이미 그것을 사용하고 여전히 오류가 발생했습니다 –

관련 문제