Recherche…


Intégration de FacebookSDK

Étape 1: Installez le SDK

Vous pouvez installer le SDK manuellement ou via CocoaPods . Cette dernière option est fortement recommandée.

Mettez ces lignes dans Podfile :

target 'MyApp' do
  use_frameworks!

  pod 'FBSDKCoreKit'
  pod 'FBSDKLoginKit'
  pod 'FBSDKShareKit'
end

Exécutez pod install dans le terminal et ouvrez ensuite .xcworkspace au lieu de .xcodeproj .

FBSDKLoginKit et FBSDKShareKit sont facultatifs. Vous pouvez ou non en avoir besoin.

Étape 2: créer une application sur Facebook

Accédez à Démarrages rapides - Facebook pour les développeurs pour créer une application.

Facebook vous demandera de télécharger le SDK après avoir créé l'application. Vous pouvez ignorer cette partie si vous avez déjà installé le SDK via CocoaPods.

Étape 3: Modifier .plist

une. Pour que votre application puisse "communiquer" avec Facebook, vous devez définir des paramètres dans votre fichier .plist . Facebook vous donnera l'extrait personnalisé sur la page Démarrages rapides.

b. Modifiez votre fichier .plist en tant que code source.

entrer la description de l'image ici

c. Collez votre extrait de code personnalisé dans le code source. Faites attention! L'extrait de code doit être exactement l'enfant de la <dict> . Votre code source devrait être quelque chose comme:

<plist version="1.0">
<dict>
    // ...
    //some default settings
    // ...
    <key>CFBundleURLTypes</key>
    <array>
        <dict>
            <key>CFBundleURLSchemes</key>
            <array>
                <string>fb{FBAppId}</string>
            </array>
        </dict>
    </array>
    <key>FacebookAppID</key>
    <string>{FBAppId}</string>
    <key>FacebookDisplayName</key>
    <string>{FBAppName}</string>
    <key>LSApplicationQueriesSchemes</key>
    <array>
        <string>fbapi</string>
        <string>fb-messenger-api</string>
        <string>fbauth2</string>
        <string>fbshareextension</string>
    </array>
<key>NSAppTransportSecurity</key>
<dict>
    <key>NSExceptionDomains</key>
    <dict>
        <key>facebook.com</key>
        <dict>
            <key>NSIncludesSubdomains</key>
            <true/>
            <key>NSExceptionRequiresForwardSecrecy</key>
            <false/>
        </dict>
        <key>fbcdn.net</key>
        <dict>
            <key>NSIncludesSubdomains</key>
            <true/>
            <key>NSExceptionRequiresForwardSecrecy</key>
            <false/>
        </dict>
        <key>akamaihd.net</key>
        <dict>
            <key>NSIncludesSubdomains</key>
            <true/>
            <key>NSExceptionRequiresForwardSecrecy</key>
            <false/>
        </dict>
    </dict>
</dict>
</plist>

Si vous collez l'extrait de code au mauvais endroit, vous rencontrerez des problèmes.

Étape 4: Indiquez à Facebook l'identifiant de votre bundle sur la page Quick Starts.

=> Comment obtenir l'identifiant du bundle

Étape 5: Modifiez votre AppDelegate.swift

une.

import FBSDKCoreKit

b.

func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool {
    FBSDKApplicationDelegate.sharedInstance().application(application, didFinishLaunchingWithOptions: launchOptions)
    return true
}

func application(application: UIApplication, openURL url: NSURL, sourceApplication: String?, annotation: AnyObject) -> Bool {
    return FBSDKApplicationDelegate.sharedInstance().application(application, openURL: url, sourceApplication: sourceApplication, annotation: annotation)
}

Créer votre propre bouton "Connexion avec Facebook" personnalisé

Parfois, nous voulons concevoir notre propre interface utilisateur pour le bouton "Sign In With Facebook" au lieu du bouton d'origine fourni avec FacebookSDK.

  1. Dans votre storyboard, faites glisser votre UIButton et réglez-le comme vous le souhaitez.
  2. Ctrl + faites glisser votre bouton sur votre contrôleur de vue en tant que IBAction.
  3. Dans la méthode IBAction, vous simulerez un clic sur le bouton Facebook actuel comme suit:

Rapide:

    let loginButton = FBSDKLoginButton()
    loginButton.delegate = self
    // Your Custom Permissions Array
    loginButton.readPermissions =
    [
                             "public_profile",
                             "email",
                             "user_about_me",
                             "user_photos"
    ]
    // Hiding the button
    loginButton.hidden = true
    self.view.addSubview(loginButton)
    // Simulating a tap for the actual Facebook SDK button
    loginButton.sendActionsForControlEvents(UIControlEvents.TouchUpInside)

Objectif c:

FBSDKLoginButton *FBButton = [FBSDKLoginButton new];

// Your Custom Permissions Array
FBButton.readPermissions = @[@"public_profile",
                             @"email",
                             @"user_about_me",
                             @"user_photos"
                             ];
FBButton.loginBehavior = FBSDKLoginBehaviorNative;
[FBButton setDelegate:self];
[FBButton setHidden:true];
[loginButton addSubview:FBButton];

[FBButton sendActionsForControlEvents:UIControlEventTouchUpInside];

Vous avez terminé.

Récupérer les données utilisateur facebook

Une fois que l'utilisateur s'est connecté à Facebook sur votre application, il est temps de récupérer les données demandées dans FBButton.readPermissions .

Rapide:

enum FacebookParametesField : String
{
    case FIELDS_KEY = "fields"
    case FIELDS_VALUE = "id, email, picture, first_name, last_name"
}


if FBSDKAccessToken.currentAccessToken() != nil
{
//  Getting user facebook data
FBSDKGraphRequest(graphPath: "me", 
                 parameters: [FacebookParametesField.FIELDS_KEY.rawValue : FacebookParametesField.FIELDS_VALUE.rawValue])
.startWithCompletionHandler({ (graphConnection : FBSDKGraphRequestConnection!, result : AnyObject!, error : NSError!) -> Void in
    
        if error == nil
        {
            print("Facebook Graph phaze")

            let email = result["email"]
            let facebookToken = FBSDKAccessToken.currentAccessToken().tokenString
            let userFacebookId = result["id"]
            let firstName = result["first_name"]
            let lastName = result["last_name"]
            
            if let result = result as? Dictionary<String, AnyObject>
            {
                if let picture = result["picture"] as? Dictionary<String,AnyObject>
                {
                    if let data = picture["data"] as? Dictionary <String,AnyObject>
                    {
                        if let url = data["url"] as? String
                        {
                            //  Profile picture URL
                            let profilePictureURL = url
                        }
                    }
                }
            }
        }
    })
}


Modified text is an extract of the original Stack Overflow Documentation
Sous licence CC BY-SA 3.0
Non affilié à Stack Overflow