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.
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.
- Dans votre storyboard, faites glisser votre UIButton et réglez-le comme vous le souhaitez.
- Ctrl + faites glisser votre bouton sur votre contrôleur de vue en tant que IBAction.
- 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
}
}
}
}
}
})
}