Utilisation de l’API Graph, iOS

Utilisez l’API Graph pour obtenir des données dans le graphe social de Facebook et en dehors.

Par exemple :

  • Récupérer des informations de profil pour fournir un contexte social.
  • Récupérer des informations sur les utilisateur·ices telles que leurs mentions J’aime ou leurs photos.
  • Publier du contenu (y compris des vidéos ou des photos) sur Facebook.
  • Publier des actualités Open Graph sur Facebook.
  • Pour plus de fonctionnalités, reportez-vous à la documentation sur l’API Graph.

Ce guide décrit comment travailler avec l’API Graph en utilisant le SDK Facebook pour iOS.

Conditions requises

L’appel de l’API Graph nécessite que quelqu’un se connecte à votre application via Facebook et accorde des autorisations pour cette dernière.

Par exemple, si vous souhaitez récupérer l’adresse e-mail d’une personne, votre application doit avoir obtenu l’autorisation email . Assurez-vous de bien maîtriser les aspects suivants :

Il faut également que votre environnement de développement soit paramétré pour le SDK iOS et que votre application soit configurée. Pour en savoir plus, reportez-vous au guide de démarrage avec iOS.

Récupération des données des utilisateur·ices

Le SDK comporte deux classes permettant de travailler avec l’API Graph : FBSDKGraphRequest et FBSDKGraphRequestConnection qui sont semblables aux objets NSURLRequest et NSURLRequestConnectionde la structure Foundation.

Pour utiliser FBSDKGraphRequest , vous devez fournir la requête avec un point de terminaison spécifique de l’API Graph. Vous devez ensuite appeler FBSDKGraphRequestConnection pour lancer la requête et la traiter en totalité.

Pour plus de commodité, le SDK offre une méthode startWithCompletionHandler: sur FBSDKGraphRequest qui permet de créer implicitement un objet FBSDKGraphRequestConnection pour vous.

Par exemple, pour récupérer les informations de profil de la personne actuellement connectée à votre application, exécutez l’appel suivant :

guard AccessToken.current != nil else { return }

let request = GraphRequest(graphPath: "me", parameters: [:])
request.start() { connection, result, error in
    if let result = result, error == nil {
        print("fetched user: \(result)")
    }
}

Requêtes par lot

Dans l’API Graph, vous pouvez exécuter des requêtes par lot via une requête HTTP unique. Pour en savoir plus, consultez l’article API Graph, Requêtes par lot.

Avec le SDK, vous pouvez construire plusieurs requêtes et les ajouter à la même instance FBSDKGraphRequestConnection . Exécutez des requêtes par lot le plus souvent possible afin de réduire le trafic réseau.

Par exemple, la requête suivante porte sur les mentions J’aime d’une personne :

guard let token = AccessToken.current else { return }

if token.hasGranted("user_likes") {
    let meRequest = GraphRequest(graphPath: "me", parameters: [:])
    let likesRequest = GraphRequest(graphPath: "me/likes", parameters: [:])

    let connection = GraphRequestConnection()
    connection.add(meRequest) { connection, result, error in
        // Process the 'me' information
    }
    connection.add(likesRequest) { connection, result, error in
        // Process the 'likes' information
    }

    connection.start()
}

Vous pouvez également spécifier des paramètres de lot avec les surcharges addRequest:completionHandler: , ce qui permet de créer un lot avec des requêtes dépendantes.

Partage de photos et vidéos

Bien que vous puissiez toujours créer manuellement des requêtes FBSDKGraphRequests pour travailler avec les points de terminaison de l’API Graph, le SDK Facebook pour iOS simplifie le partage des photos et des vidéos avec FBSDKShareKit.framework. Par exemple, pour partager une photo :

let image: UIImage!
let content = SharePhotoContent()
content.photos = SharePhoto(image: image, isUserGenerated: true)

// Assuming self implements SharingDelegate
let dialog = ShareDialog(
    viewController: self,
    content: content,
    delegate: self
)
dialog.show()

Vous pouvez également partager des vidéos avec le type FBSDKShareVideoContent . Consultez l’article Partage sur iOS.

Suppression d’objets

Vous pouvez également supprimer des objets créés par votre application en envoyant une requête DELETE avec l’ID de l’objet comme chemin du graphe.

Par exemple, supposons que vous ayez publié une photo sur une Page et que vous ayez reçu l’identifiant « 1234 ». Le code suivant permettrait de supprimer la photo :

guard let token = AccessToken.current else { return }

if token.hasGranted("pages_manage_posts") {
    let request = GraphRequest(graphPath: "1234", parameters: [:], httpMethod: .delete)
    request.start { connection, result, error in
        if error == nil {
            print("Deleted photo")
        }
    }
}

Conseils de débogage

Vous pouvez expérimenter et tester vos requêtes avec l’Explorateur de l’API Graph.

Vous pouvez également activer le mode de débogage de l’API Graph. Pour en savoir plus, consultez l’article Questions/réponses et dépannage pour le SDK Facebook pour iOS, Comment déboguer des demandes de l’API Graph.