
Enables seamless Facebook sign-in integration for applications, simplifying authentication implementation. Facilitates user data retrieval and sign-out options with customizable UI components for streamlined user experience.
ComposeSignWithFacebook is available on mavenCentral().
implementation("io.github.the-best-is-best:compose-facebook-sigin-in:1.0.0") # use_frameworks!
use_modular_headers!
pod "FBSDKLoginKit" , "17.4.0"
pod "FBSDKCoreKit" , "17.4.0"
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string name="facebook_app_id">123</string>
<string name="fb_login_protocol_scheme">fb123</string>
<string name="facebook_client_token">456</string>
<string name="app_name">app name</string>
</resources> <uses-permission android:name="android.permission.INTERNET" />
<uses-permission
android:name="com.google.android.gms.permission.AD_ID"
tools:node="remove" />
<application>
....
<activity
android:name="com.facebook.CustomTabActivity"
android:exported="true">
<intent-filter>
<action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.DEFAULT" />
<category android:name="android.intent.category.BROWSABLE" />
<data android:scheme="@string/fb_login_protocol_scheme" />
</intent-filter>
</activity>
...
</application><key>CFBundleURLTypes</key>
<array>
<dict>
<key>CFBundleURLSchemes</key>
<array>
<string>fb123</string>
</array>
</dict>
</array>
<key>FacebookAppID</key>
<string>123</string>
<key>FacebookDisplayName</key>
<string>App name</string>
<!-- Add the LSApplicationQueriesSchemes key with Facebook-specific schemes -->
<key>LSApplicationQueriesSchemes</key>
<array>
<string>fbapi</string>
<string>fb-messenger-api</string>
<string>fbauth2</string>
<string>fbshareextension</string>
</array>
<!-- Add the FacebookClientToken key -->
<key>FacebookClientToken</key>
<string>456</string>
<key>NSUserTrackingUsageDescription</key>
<string>This identifier will be used to deliver personalized ads to you.</string>
import UIKit
import ComposeApp
import FirebaseCore
import FBSDKCoreKit
import AppTrackingTransparency
@main
class AppDelegate: UIResponder, UIApplicationDelegate {
var window: UIWindow?
func application(
_ application: UIApplication,
didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?
) -> Bool {
// add this
FirebaseApp.configure()
ApplicationDelegate.shared.application(application, didFinishLaunchingWithOptions: launchOptions)
// end this
window = UIWindow(frame: UIScreen.main.bounds)
if let window = window {
window.rootViewController = MainKt.MainViewController()
window.makeKeyAndVisible()
}
return true
}
// add this
func application(
_ app: UIApplication,
open url: URL,
options: [UIApplication.OpenURLOptionsKey : Any] = [:]
) -> Bool {
ApplicationDelegate.shared.application(
app,
open: url,
sourceApplication: options[UIApplication.OpenURLOptionsKey.sourceApplication] as? String,
annotation: options[UIApplication.OpenURLOptionsKey.annotation]
)
}
// add this request permission
func applicationDidBecomeActive(_ application: UIApplication) {
if #available(iOS 14, *) {
ATTrackingManager.requestTrackingAuthorization { _ in
}
}
}
}AndroidSignInWithFacebook.initialization(this, R.string.facebook_app_id) val faceBookSignIn = KFacebookSignIn()
SignInButton(
scopes = listOf("email", "public_profile"),
onSignInFailed = {
println("sign in error is ${it}")
},
onSignedIn = {
println("sign in success $it")
scope.launch {
if (it != null) {
Firebase.auth.signInWithCredential(
FacebookAuthProvider.credential(
accessToken = it
)
)
}
}
},
config = SignInButtonConfig(
buttonText = "Sign in with Facebook",
iconRes = SignInWithFacebookIcon.Facebook,
iconResModifier = Modifier.size(24.dp),
modifier = Modifier,
textColor = Color.Black,
)
)
Button(onClick = {
println("facebook access token ${faceBookSignIn.getAccessToken()}")
}) {
Text("Get last access token")
}
Button(onClick = {
scope.launch {
val userData = faceBookSignIn.getUserData()
userData.onSuccess {
println("user photo ${it.pictureUrl}")
}
userData.onFailure {
println("error get user data $it")
}
}
}) {
Text("Get user data")
}
Button(onClick = {
scope.launch {
faceBookSignIn.signOut()
// Firebase.auth.signOut()
}
}) {
Text("Logout")
}ComposeSignWithFacebook is available on mavenCentral().
implementation("io.github.the-best-is-best:compose-facebook-sigin-in:1.0.0") # use_frameworks!
use_modular_headers!
pod "FBSDKLoginKit" , "17.4.0"
pod "FBSDKCoreKit" , "17.4.0"
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string name="facebook_app_id">123</string>
<string name="fb_login_protocol_scheme">fb123</string>
<string name="facebook_client_token">456</string>
<string name="app_name">app name</string>
</resources> <uses-permission android:name="android.permission.INTERNET" />
<uses-permission
android:name="com.google.android.gms.permission.AD_ID"
tools:node="remove" />
<application>
....
<activity
android:name="com.facebook.CustomTabActivity"
android:exported="true">
<intent-filter>
<action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.DEFAULT" />
<category android:name="android.intent.category.BROWSABLE" />
<data android:scheme="@string/fb_login_protocol_scheme" />
</intent-filter>
</activity>
...
</application><key>CFBundleURLTypes</key>
<array>
<dict>
<key>CFBundleURLSchemes</key>
<array>
<string>fb123</string>
</array>
</dict>
</array>
<key>FacebookAppID</key>
<string>123</string>
<key>FacebookDisplayName</key>
<string>App name</string>
<!-- Add the LSApplicationQueriesSchemes key with Facebook-specific schemes -->
<key>LSApplicationQueriesSchemes</key>
<array>
<string>fbapi</string>
<string>fb-messenger-api</string>
<string>fbauth2</string>
<string>fbshareextension</string>
</array>
<!-- Add the FacebookClientToken key -->
<key>FacebookClientToken</key>
<string>456</string>
<key>NSUserTrackingUsageDescription</key>
<string>This identifier will be used to deliver personalized ads to you.</string>
import UIKit
import ComposeApp
import FirebaseCore
import FBSDKCoreKit
import AppTrackingTransparency
@main
class AppDelegate: UIResponder, UIApplicationDelegate {
var window: UIWindow?
func application(
_ application: UIApplication,
didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?
) -> Bool {
// add this
FirebaseApp.configure()
ApplicationDelegate.shared.application(application, didFinishLaunchingWithOptions: launchOptions)
// end this
window = UIWindow(frame: UIScreen.main.bounds)
if let window = window {
window.rootViewController = MainKt.MainViewController()
window.makeKeyAndVisible()
}
return true
}
// add this
func application(
_ app: UIApplication,
open url: URL,
options: [UIApplication.OpenURLOptionsKey : Any] = [:]
) -> Bool {
ApplicationDelegate.shared.application(
app,
open: url,
sourceApplication: options[UIApplication.OpenURLOptionsKey.sourceApplication] as? String,
annotation: options[UIApplication.OpenURLOptionsKey.annotation]
)
}
// add this request permission
func applicationDidBecomeActive(_ application: UIApplication) {
if #available(iOS 14, *) {
ATTrackingManager.requestTrackingAuthorization { _ in
}
}
}
}AndroidSignInWithFacebook.initialization(this, R.string.facebook_app_id) val faceBookSignIn = KFacebookSignIn()
SignInButton(
scopes = listOf("email", "public_profile"),
onSignInFailed = {
println("sign in error is ${it}")
},
onSignedIn = {
println("sign in success $it")
scope.launch {
if (it != null) {
Firebase.auth.signInWithCredential(
FacebookAuthProvider.credential(
accessToken = it
)
)
}
}
},
config = SignInButtonConfig(
buttonText = "Sign in with Facebook",
iconRes = SignInWithFacebookIcon.Facebook,
iconResModifier = Modifier.size(24.dp),
modifier = Modifier,
textColor = Color.Black,
)
)
Button(onClick = {
println("facebook access token ${faceBookSignIn.getAccessToken()}")
}) {
Text("Get last access token")
}
Button(onClick = {
scope.launch {
val userData = faceBookSignIn.getUserData()
userData.onSuccess {
println("user photo ${it.pictureUrl}")
}
userData.onFailure {
println("error get user data $it")
}
}
}) {
Text("Get user data")
}
Button(onClick = {
scope.launch {
faceBookSignIn.signOut()
// Firebase.auth.signOut()
}
}) {
Text("Logout")
}