2016-06-26 9 views
11

Sto utilizzando l'autenticazione Firebase con Google Sign in ma voglio firmare da un'altra attività ma quando esco con questo metodo funziona perfettamente dal stessa attività ma non con un'altra attività. Ecco il metodo."GoogleApiClient non è ancora connesso" al logout quando si utilizza l'autenticazione Firebase con google accedi

public void logOut() { 
     mAuth.signOut(); 
     // Google sign out 
     Auth.GoogleSignInApi.signOut(googleApiClient).setResultCallback(
       new ResultCallback<Status>() { 
        @Override 
        public void onResult(@NonNull Status status) { 
         authorizeUser(null); 
        } 
       }); 
    } 

Ma quando si effettua questo metodo statico ed il googleApiClient statica che ancora non funziona e quando ho eseguire solo

FirebaseAuth.getInstance().signOut(); 

l'im errore di ottenere è questo (logcat)

E/AndroidRuntime: FATAL EXCEPTION: main 
     Process: com.igov, PID: 21316 
java.lang.IllegalStateException: GoogleApiClient is not connected yet. 
     at com.google.android.gms.internal.zzoe.zzd(Unknown Source) 
     at com.google.android.gms.internal.zzoh.zzd(Unknown Source) 
     at com.google.android.gms.internal.zzof.zzd(Unknown Source) 
     at com.google.android.gms.auth.api.signin.internal.zzc.signOut(Unknown Source) 
     at com.igov.design.LoginActivity.logOut(LoginActivity.java:159) 
     at com.igov.design.LoginActivity$2.onClick(LoginActivity.java:62) 
     at android.view.View.performClick(View.java:5198) 
     at com.igov.design.MainActivity.onNavigationItemSelected(MainActivity.java:101) 
     at android.support.design.widget.NavigationView$1.onMenuItemSelected(NavigationView.java:152) 
     at android.support.v7.view.menu.MenuBuilder.dispatchMenuItemSelected(MenuBuilder.java:810) 
     at android.support.v7.view.menu.MenuItemImpl.invoke(MenuItemImpl.java:152) 
     at android.support.v7.view.menu.MenuBuilder.performItemAction(MenuBuilder.java:957) 
     at android.support.design.internal.NavigationMenuPresenter$1.onClick(NavigationMenuPresenter.java:318) 
     at android.view.View.performClick(View.java:5198) 
     at android.view.View$PerformClick.run(View.java:21147) 
     at android.os.Handler.handleCallback(Handler.java:739) 
     at android.os.Handler.dispatchMessage(Handler.java:95) 
     at android.os.Looper.loop(Looper.java:148) 
     at android.app.ActivityThread.main(ActivityThread.java:5417) 
     at java.lang.reflect.Method.invoke(Native Method) 
     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726) 
     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616) 
+0

L'eccezione è molto esplicito : stai tentando di utilizzare GoogleApiClient quando non è ancora stato inizializzato. Hai provato una delle risposte in http://stackoverflow.com/search?q=GoogleApiClient+is+non+connected+yet? –

risposta

19

Registrazione di una richiamata alla connessione al client Google Api

classi utilizzate:

  • classe LoginActivity (Attività alla Login)
  • classe LogoutActivity (Attività disconnettere)

Codice:

public void logout() { 
     mGoogleApiClient.connect(); 
     mGoogleApiClient.registerConnectionCallbacks(new GoogleApiClient.ConnectionCallbacks() { 
     @Override 
     public void onConnected(@Nullable Bundle bundle) { 

      FirebaseAuth.getInstance().signOut(); 
      if(mGoogleApiClient.isConnected()) { 
       Auth.GoogleSignInApi.signOut(mGoogleApiClient).setResultCallback(new ResultCallback<Status>() { 
        @Override 
        public void onResult(@NonNull Status status) { 
         if (status.isSuccess()) { 
          Log.d(TAG, "User Logged out"); 
          Intent intent = new Intent(LogoutActivity.this, LoginActivity.class); 
          startActivity(intent); 
          finish(); 
         } 
        } 
       }); 
      } 
     } 

     @Override 
     public void onConnectionSuspended(int i) { 
      Log.d(TAG, "Google API Client Connection Suspended"); 
     } 
    }); 
} 
+0

se hai ancora problemi, non esitare a commentare. – devprashant

+0

hey ho provato il tuo codice .. ho ottenuto un'eccezione di puntatore nullo in questa riga: mGoogleApiClient.connect(); –

+0

@sagar crea googleapiclient prima di usarlo – devprashant

Problemi correlati