2016-09-21 4 views
0

我々は二つの方法Google LogInからログアウトするには?

  • SingOut
  • RevokeAccess

を持っているGoogleのdocxファイルによると、私はGoogleが

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); 
    } 
} 

、このような方法を提供する。この方法のために第二1

が必要しかし、私が呼び出しようとするたびにそれは私がエラーを取得する

GoogleApiClientはまだ接続されていません。

私はthe same issue on stackを発見し、限り私は私がLogIn()

。したがって、このオブジェクトを保存する方法を私ができる疑問作っ同じオブジェクト上revokeAccess()を起動する必要が理解しこれに応じて?それともコンセプトを誤解していますか?

私は間違っていますか?それぞれ異なる活動で

EDIT

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

EDIT 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

私は1つのアクティビティにログインして別のものに行くと、 'mGoogleApiClient.connected()'を作成する必要がありますか? –

+0

まったく同じですが、あなたのアカウントを選択すると接続するautomanage thneを使用してこれを行うことができます。その後、UIには何も表示されません。 –

+0

私の質問を編集しました。 '<------'と書かれた行があるので、 'mGoogleApiClient.connected()'の代わりに使う必要があるのですか?しかし、私はすでにそれを使用してまだエラーが発生している –

関連する問題