Verwenden der Graph API, iOS

Verwende die Graph API, um Daten in den Social Graph von Facebook einzubinden und sie von dort abzurufen.

Dazu gehört Folgendes:

  • Abrufen von Profilinformationen zur Bereitstellung des sozialen Kontexts
  • Abrufen von Nutzerinformationen, wie z. B. „Gefällt mir“-Angaben oder Fotos
  • Veröffentlichen von Beiträgen (einschließlich Videos und Fotos) auf Facebook
  • Veröffentlichen von Open Graph-Meldungen auf Facebook
  • Weitere Funktionen findest du in der Graph API-Dokumentation.

Dieser Leitfaden beschreibt die Arbeit mit der Graph API mithilfe des Facebook-SDK für iOS.

Voraussetzungen

Für das Aufrufen der Graph API muss sich eine Person über Facebook bei deiner App anmelden und Berechtigungen für deine App erteilen.

Wenn du beispielsweise die E-Mail-Adresse einer Person abrufen möchtest, muss deine App für die Berechtigung email autorisiert sein. Mache dich mit Folgendem vertraut:

Du muss darüber hinaus deine Entwicklungsumgebung für das iOS-SDK sowie deine App einrichten. Weitere Informationen findest du unter iOS, Leitfaden für erste Schritte.

Abrufen von Nutzerdaten

Das SDK nutzt zwei Klassen für die Arbeit mit der Graph API: FBSDKGraphRequest und FBSDKGraphRequestConnection. Diese Klassen ähneln NSURLRequest und NSURLRequestConnectiondes Foundation-Framework.

Um FBSDKGraphRequest zu verwenden, musst du der Anfrage einen bestimmten Graph API-Endpunkt bereitstellen. Rufe dann FBSDKGraphRequestConnection. auf, um die Anfrage zu starten und zu verarbeiten.

Für eine einfachere Verwendung verfügt das SDK über eine startWithCompletionHandler:- Methode in FBSDKGraphRequest um implizit eine FBSDKGraphRequestConnection. für dich zu erstellen.

Um beispielsweise die Profilinformationen für die Person abzurufen, die derzeit bei deiner App angemeldet ist, führe diesen Aufruf durch:

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)")
    }
}

Batch-Anfragen

In der Graph API kannst du Batch-Anfragen in einer einzelnen HTTP-Anfrage durchführen. Weitere Informationen findest du unter Graph API, Senden von Batch-Anfragen.

Mit dem SDK kannst du mehrere Anfragen erstellen und sie zu derselben FBSDKGraphRequestConnection. Instanz hinzufügen. Du solltest Anfragen wann immer möglich in Batches zusammenfassen, um den Netzwerkdatenverkehr zu minimieren.

Hier fordern wir beispielsweise die „Gefällt mir“-Angaben einer Person an:

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()
}

Du kannst auch Batch-Parameter mit den addRequest:completionHandler:- Overloads angeben. So kannst du einen Batch mit abhängigen Anfragen erstellen.

Teilen von Fotos und Videos

Du kannst zwar FBSDKGraphRequests zur Arbeit mit Graph API-Endpunkten auch manuell erstellen, doch das Facebook-SDK für iOS vereinfacht das Teilen von Fotos und Videos mit FBSDKShareKit.framework. So teilst du beispielsweise ein Foto:

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()

Du kannst auch Videos teilen, indem du den FBSDKShareVideoContent- Typ verwendest. Weitere Informationen hierzu findest du unter Teilen in iOS.

Löschen von Objekten

Du kannst auch von deiner App erstellte Objekte löschen, indem du eine DELETE- Anfrage mit der Objekt-ID als Graph-Pfad sendest.

Beispiel: Du hast ein Foto auf einer Seite veröffentlicht und die ID „1234“ erhalten. Mit dem folgenden Code kannst du das Foto löschen:

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")
        }
    }
}

Tipps zum Debugging

Du kannst Anfragen im Graph API Explorer testen und mit ihnen experimentieren.

Außerdem kannst du den Graph API-Debug-Modus aktivieren. Weitere Informationen hierzu findest du unter iOS-SDK-Fehlerbehebung, Graph API-Debug-Modus.