2016-09-11 21 views
6

Vì vậy, tôi đã tìm ra cách đăng xuất đúng cách với Google. Mát mẻ. Bây giờ, Facebook thì sao?Cách đăng xuất khỏi Facebook trên Android với Firebase đúng cách?

Khi tôi gặp lỗi khi đăng nhập vào Facebook, chẳng hạn như lỗi cho biết tôi đã có tài khoản Firebase với cùng thông tin đăng nhập nhưng nhà cung cấp dịch vụ xã hội khác, tôi nhận nút "Đăng xuất khỏi facebook". Để được rõ ràng hơn:

tôi cố gắng đăng nhập vào Facebook, sau đó tôi nhận được một lỗi (đây không phải là vấn đề của tôi!), Nhưng vấn đề là, nút Facebook tại là vào "Đăng xuất". Khi cần vẫn còn"Đăng nhập bằng Facebook". Tôi biết tại sao điều này đang xảy ra; đó là bởi vì lỗi là với căn cứ hỏa lực và Facebook nghĩ rằng tôi đang đăng nhập.

Nhưng câu hỏi thực sự là, làm thế nào để đúng cách đăng xuất của Facebook? FirebaseAuth.getInstance().signout() dường như không đăng xuất được Facebook.

Dưới đây là hiện logout() phương pháp của tôi:

static void logOut(final Context context) { 
    new SweetAlertDialog(context, SweetAlertDialog.WARNING_TYPE) 
     .showCancelButton(true) 
     .setTitleText(context.getString(R.string.areYouSure)) 
     .setContentText(context.getString(R.string.logoutMSG)) 
     .setCancelText(context.getString(android.R.string.no)) 
     .setCancelClickListener(new SweetAlertDialog.OnSweetClickListener() { 
      @Override 
      public void onClick(SweetAlertDialog sweetAlertDialog) { 
       sweetAlertDialog.dismiss(); 
      } 
     }) 
     .setConfirmText(context.getString(R.string.yes)) 
     .setConfirmClickListener(new SweetAlertDialog.OnSweetClickListener() { 
      @Override 
      public void onClick(final SweetAlertDialog sweetAlertDialog) { 
       //region Google 
       GoogleSignInOptions gso = new GoogleSignInOptions.Builder(GoogleSignInOptions.DEFAULT_SIGN_IN) 
        .requestIdToken(context.getString(R.string.default_web_client_id)) 
        .requestEmail() 
        .build(); 
       final GoogleApiClient mGoogleApiClient = new GoogleApiClient.Builder(context) 
        .enableAutoManage((FragmentActivity) context, new GoogleApiClient.OnConnectionFailedListener() { 
         @Override 
         public void onConnectionFailed(@NonNull ConnectionResult connectionResult) { 
          FirebaseCrash.log(connectionResult.getErrorMessage()); 
          Toast.makeText(context, context.getString(R.string.error), Toast.LENGTH_SHORT).show(); 
         } 
        }) 
        .addApi(Auth.GOOGLE_SIGN_IN_API, gso) 
        .build(); 
       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()) { 
             FirebaseAuth.getInstance().signOut(); 
             sweetAlertDialog.dismiss(); 
             Log.d(TAG, "User Logged out"); 
             Intent intent = new Intent(context, SignUp.class); 
             context.startActivity(intent); 
             ((FragmentActivity) context).finish(); 
            } else 
             Toast.makeText(context, context.getString(R.string.error), Toast.LENGTH_SHORT).show(); 
           } 
          }); 
         } 
        } 

        @ 
        Override 
        public void onConnectionSuspended(int i) { 
         Log.e(TAG, "Google API Client Connection Suspended"); 
        } 
       }); 
       //endregion 
      } 
     }).show(); 
} 

Trả lời

23

Tôi đã có một vấn đề tương tự và đã nhận nó giải quyết sử dụng cả các căn cứ hỏa lực Auth dụ và facebook LoginManager dụ

FirebaseAuth.getInstance().signOut(); 
LoginManager.getInstance().logOut(); 

My Question

+0

Hey, cảm ơn câu trả lời, nhưng tôi vẫn gặp vấn đề. Điều gì sẽ xảy ra nếu người dùng muốn thay đổi tài khoản Facebook của mình? Nhấp vào nút "đăng nhập" tự động chọn người dùng. –

+0

Tôi nghĩ rằng nếu người dùng thay đổi tài khoản của mình từ ứng dụng facebook, sau đó nhấp vào đăng nhập lại từ ứng dụng của bạn (khi đăng xuất) sẽ chuyển hướng anh ta đăng nhập bằng tài khoản mới. Tuy nhiên, , nếu vẫn có phiên hoạt động trên ứng dụng của bạn, bạn có thể muốn kiểm tra điều đó để thực hiện một hành động cụ thể như ở đây http://stackoverflow.com/questions/29294015/how-to-check-if-user -is-logged-in-with-fb-sdk-4-0-for-android –

+0

Tôi có cùng một vấn đề. Khi tôi đăng xuất, nút đăng xuất vẫn hiển thị. Khi tôi nhấp vào nút đăng xuất, tôi có thể đăng xuất đúng cách. –

Các vấn đề liên quan