2016-06-26 7 views
11

GoogleログインでFirebase認証を使用していますが、他のアクティビティからログアウトしたいのですが、同じ活動ではあるが別の活動ではない。ここにその方法があります。Google BaseでFirebase認証を使用すると、ログアウト時に「GoogleApiClientが接続されていません」

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

しかし、この方法は、静的な作りとgoogleApiClientの静的が、それはまだ動作しないと私は

FirebaseAuth.getInstance().signOut(); 

を実行すると、エラーイム取得は、この(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

例外はきわめて明確です:まだ初期化されていないときにGoogleApiClientを使用しようとしています。 http://stackoverflow.com/search?q=GoogleApiClient+is+not+connected+yetで答えを試しましたか? –

答えて

19

Google Apiクライアントへの接続を登録する

使用さ

クラス:

  • LoginActivityクラス(ログインする活動)
  • LogoutActivityクラス(活動がログアウトする)

コード:

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

まだ問題に直面している場合は、お気軽にコメントしてください。 – devprashant

+0

ねえ、私はあなたのコードを試してみました..私はこの行にnullポインタの例外があります:mGoogleApiClient.connect(); –

+0

@sagar googleapiclientを使用する前に作成 – devprashant

関連する問題