Skip to content

Commit 17319ed

Browse files
committed
feat: add Facebook sign-out functionality
1 parent 30d5f19 commit 17319ed

4 files changed

Lines changed: 30 additions & 10 deletions

File tree

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,10 @@
11
<resources>
22
<string name="app_name">FirebaseUI Demo</string>
33

4-
<string name="firebase_web_host" translatable="false">flutterfire-e2e-tests.firebaseapp.com</string>
4+
<string name="firebase_web_host" translatable="false">temp-test-aa342.firebaseapp.com</string>
55

66
<!-- Facebook SDK Configuration -->
7-
<string name="facebook_application_id" translatable="false">128693022464535</string>
8-
<string name="facebook_login_protocol_scheme" translatable="false">fb128693022464535</string>
9-
<string name="facebook_client_token" translatable="false">16dbbdf0cfb309034a6ad98ac2a21688</string>
7+
<string name="facebook_application_id" translatable="false">879782018043124</string>
8+
<string name="facebook_login_protocol_scheme" translatable="false">fb879782018043124</string>
9+
<string name="facebook_client_token" translatable="false">3f03c9e0b3b4e084636d7bebd5f3633a</string>
1010
</resources>

auth/src/main/java/com/firebase/ui/auth/FirebaseAuthUI.kt

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@ import android.content.Intent
1919
import androidx.annotation.RestrictTo
2020
import com.firebase.ui.auth.configuration.AuthUIConfiguration
2121
import com.firebase.ui.auth.configuration.auth_provider.AuthProvider
22+
import com.firebase.ui.auth.configuration.auth_provider.signOutFromFacebook
2223
import com.firebase.ui.auth.configuration.auth_provider.signOutFromGoogle
2324
import com.google.firebase.FirebaseApp
2425
import com.google.firebase.auth.FirebaseAuth
@@ -367,6 +368,7 @@ class FirebaseAuthUI private constructor(
367368
auth.signOut()
368369
.also {
369370
signOutFromGoogle(context)
371+
signOutFromFacebook()
370372
}
371373

372374
// Update state to idle (user signed out)

auth/src/main/java/com/firebase/ui/auth/configuration/auth_provider/FacebookAuthProvider+FirebaseAuthUI.kt

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -192,3 +192,21 @@ internal suspend fun FirebaseAuthUI.signInWithFacebook(
192192
}
193193
}
194194

195+
/**
196+
* Signs out the current user from Facebook.
197+
*
198+
* Invokes Facebook's LoginManager to log out the user from their Facebook session.
199+
* This method silently catches and ignores any exceptions that may occur during the
200+
* logout process to ensure the sign-out flow continues even if Facebook logout fails.
201+
*
202+
* This is typically called as part of the overall sign-out flow when a user signs out
203+
* from Firebase Authentication.
204+
*/
205+
internal fun FirebaseAuthUI.signOutFromFacebook() {
206+
try {
207+
if (Provider.fromId(getCurrentUser()?.providerId) != Provider.FACEBOOK) return
208+
LoginManager.getInstance().logOut()
209+
} catch (e: Exception) {
210+
Log.e("FacebookAuthProvider", "Error during Facebook sign out", e)
211+
}
212+
}

auth/src/main/java/com/firebase/ui/auth/configuration/auth_provider/GoogleAuthProvider+FirebaseAuthUI.kt

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
package com.firebase.ui.auth.configuration.auth_provider
22

33
import android.content.Context
4+
import android.util.Log
45
import androidx.compose.runtime.Composable
56
import androidx.compose.runtime.remember
67
import androidx.compose.runtime.rememberCoroutineScope
@@ -198,13 +199,12 @@ internal suspend fun FirebaseAuthUI.signInWithGoogle(
198199
*
199200
* @param context Android context for Credential Manager
200201
*/
201-
internal suspend fun signOutFromGoogle(context: Context) {
202+
internal suspend fun FirebaseAuthUI.signOutFromGoogle(context: Context) {
202203
try {
204+
if (Provider.fromId(getCurrentUser()?.providerId) != Provider.GOOGLE) return
203205
val credentialManager = CredentialManager.create(context)
204-
credentialManager.clearCredentialState(
205-
ClearCredentialStateRequest()
206-
)
207-
} catch (_: Exception) {
208-
206+
credentialManager.clearCredentialState(ClearCredentialStateRequest())
207+
} catch (e: Exception) {
208+
Log.e("GoogleAuthProvider", "Error during Google sign out", e)
209209
}
210210
}

0 commit comments

Comments
 (0)