Home

Awesome

Reusable Facebook Login Components

The Reusable Facebook Login Components for iOS is the easiest way to get user data from Facebook .

Features

Requirements

Installation

CocoaPods

To incorporate the SSFacebookLogin library into your Xcode project utilizing CocoaPods, please reference it within your Podfile as shown below:

pod 'SSFacebookLogin'

Swift Package Manager

To add SSFacebookLogin as a dependency to your project, follow these steps:

  1. Open your Swift project in Xcode.
  2. Navigate to File -> Add Package Dependencies....
  3. Paste https://github.com/SimformSolutionsPvtLtd/SSFacebookLogin.git into the search bar.
  4. Choose the version you want to use and click Add Package.

Manually

If you prefer not to use any of the dependency managers above, you can integrate SSFacebookLogin into your project manually.

Migration Guide

Configure App

  1. Right-click Info.plist, and choose Open As ▸ Source Code.
  2. Copy and paste the following XML snippet into the body of your file (<dict>...</dict>)
    <key>CFBundleURLTypes</key>
    <array>
      <dict>
      <key>CFBundleURLSchemes</key>
      <array>
        <string>fbAPP-ID</string>
      </array>
      </dict>
    </array>
    <key>FacebookAppID</key>
    <string>APP-ID</string>
    <key>FacebookClientToken</key>
    <string>CLIENT-TOKEN</string>
    <key>FacebookDisplayName</key>
    <string>APP-NAME</string>
    
  1. Add following code blocks in AppDelegate.swift file
    • In didFinishLaunchingWithOptions method,
        func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool {
            // Add below line for facebook configuration
            LoginManager.shared.facebookConfiguration(application, didFinishLaunchingWithOptions: launchOptions)
            return true
        }
    
    • In openUrlWithOption method,
        func application(_ app: UIApplication, open url: URL, options: [UIApplication.OpenURLOptionsKey : Any] = [:]) -> Bool {
            return LoginManager.shared.faceboolUrlConfigurationWithOptions(app, open: url, options: options)
        }
    
  2. Voila 🪄✨💫 !

Usage example

Example 1 (Get default data of user when no any arguments passed - use this for version 7.1.0 or below)
    LoginManager.shared.loginWithFacebook(controller: self, { (token, error) in
    
    if error == nil {
        print(token?.userID ?? "",token?.tokenString ?? "")
    }
    
    }) { (result, error) in
    
        if error == nil {
            if let userData = result as? UserData {
                print(userData)
                print(userData.id)
            } else {
                print(result ?? "")
            }
        }
    }
Example 2 (Get specific data of user by passing argument - use this for version 7.0.0 or below)

    LoginManager.shared.loginWithFacebook(permission: [.email, .publicProfile, .userBirthday],
    requriedFields: [.birthday, .about, .email], controller: self, { (token, error) in
    
    if error == nil {
        print(token?.userID ?? "",token?.tokenString ?? "")
    }
    
    }) { (result, error) in

        if error == nil {
            if let uResult = result  {
                print(uResult)
            }
        }
    }

Example 3 (Get specific data of user by passing argument and passing token to Firebase for using Firebase - use this for version 7.2.0)

    LoginManager.shared.logInWithFacebookFirebase(permission: [.email, .publicProfile, .userBirthday],
    requriedFields: [.birthday, .about, .email],  tracking: [.limited || .enabled], controller: self, { (token, nonce, error) in
    
    if error == nil {
        print(token?.userID ?? "",token?.tokenString ?? "")
    }
    
    }) { (userData, error) in

        if error == nil {
            if let uResult = result  {
                print(uResult)
            }
        }
    }

Example 4 (Get specific data of user by passing argument with limted login option - use this for version 7.2.0)

    LoginManager.shared.login(permission: [.email, .publicProfile, .userBirthday],
    requriedFields: [.birthday, .about, .email], tracking: [.limited || .enabled],controller: self, { (token, error) in
    
    if error == nil {
        print("token \(token)")
    }
    
    }) { (userData, error) in

        if error == nil {
            if let uResult = result  {
                print(uResult)
            }
        }
    }

🤝 How to Contribute

Whether you're helping us fix bugs, improve the docs, or a feature request, we'd love to have you! :muscle:

Check out our Contributing Guide for ideas on contributing.

Find this library useful? ❤️

Give a ⭐️ if this project helped you!

Check out our other Libraries

<h3><a href="https://github.com/SimformSolutionsPvtLtd/Awesome-Mobile-Libraries"><u>🗂 Simform Solutions Libraries→</u></a></h3>

MIT License

This project is licensed under the MIT License - see the LICENSE file for details