6

तो मुझे पता चला कि Google के साथ सही तरीके से साइनआउट कैसे करें। ठंडा। अब, फेसबुक के बारे में क्या?फायरबेस के साथ एंड्रॉइड पर फेसबुक से ठीक से साइन आउट कैसे करें?

जब मुझे फेसबुक पर साइन इन करने में कोई त्रुटि मिलती है, जैसे कि एक त्रुटि के रूप में संकेत मिलता है कि मेरे पास पहले से ही एक ही प्रमाण-पत्र के साथ फ़ायरबेस खाता है लेकिन एक अलग सामाजिक प्रदाता है, तो मुझे "फेसबुक से लॉग आउट" बटन मिलता है। अधिक स्पष्ट है:

मैं फेसबुक में प्रवेश करने का प्रयास करें, तो मैं (! यह मेरी समस्या नहीं है) कोई त्रुटि मिलती है, लेकिन समस्या यह है, फेसबुक के बटन "लॉग आउट करें" पर है। जब इसे अभी भी"फेसबुक के साथ साइन इन करें" होना चाहिए। मुझे पता है कि यह क्यों हो रहा है; यह क्योंकि त्रुटि Firebase साथ है असली सवाल है और फेसबुक मैं में साइन इन हूं सोचता है।

लेकिन, मैं कैसे ठीक से फेसबुक से साइन आउट करते हैं? FirebaseAuth.getInstance().signout()फेसबुक के लॉगआउट को प्रतीत नहीं होता है।

यहाँ मेरे वर्तमान logout() विधि है:

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

उत्तर

23

मैं एक ऐसी ही समस्या थी और यह दोनों firebase प्रमाणीकरण उदाहरण और फेसबुक LoginManager उदाहरण

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

My Question

+0

अरे का उपयोग कर हल मिल गया, उत्तर के लिए धन्यवाद, लेकिन मुझे अभी भी एक समस्या है। क्या होगा यदि उपयोगकर्ता अपना फेसबुक अकाउंट बदलना चाहता है? "लॉग इन" बटन पर क्लिक करने से स्वचालित रूप से उपयोगकर्ता चुनता है। –

+0

मुझे लगता है कि यदि उपयोगकर्ता ने फेसबुक ऐप से अपना खाता बदल दिया है, तो अपने ऐप से लॉग इन पर क्लिक करके (लॉग आउट होने पर) उसे नए खाते से लॉगिन करने के लिए रीडायरेक्ट करेगा। हालांकि, यदि उसके पास अभी भी आपके ऐप पर एक सक्रिय सत्र है, तो आप इसके लिए एक विशिष्ट कार्रवाई करने के लिए जांच कर सकते हैं जैसे http://stackoverflow.com/questions/29294015/how-to-check-if-user -is-log-in-with-fb-sdk-4-0-for-android –

+0

मुझे एक ही समस्या है। जब मैंने लॉग आउट किया, तो साइन आउट बटन अभी भी दिख रहा है। जब मैंने साइन आउट बटन पर क्लिक किया, तो मैं ठीक से लॉग आउट कर सकता हूं। –

संबंधित मुद्दे