Uso dell'API Graph, iOS

Usa l'API Graph per permettere l'ingresso e l'uscita dei dati dal social graph di Facebook.

Questo include:

  • Acquisizione delle informazioni del profilo per fornire un contesto social.
  • Acquisizione delle informazioni dell'utente, ad esempio i "Mi piace" o le foto.
  • Pubblicazione di post (compresi video o foto) su Facebook.
  • Pubblicazione di notizie Open Graph su Facebook.
  • Per altre funzioni, consulta la documentazione sull'API Graph.

Questa guida descrive come usare l'API Graph con l'SDK di Facebook per iOS.

Prerequisiti

Per chiamare l'API Graph, è necessario che qualcuno effettui l'accesso alla tua app tramite Facebook e fornisca le relative autorizzazioni.

Ad esempio, se desideri ottenere l'indirizzo e-mail di un utente, la tua app deve essere approvata per l'autorizzazione email . Assicurati di avere familiarità con:

Dovrai anche configurare l'ambiente di sviluppo per l'SDK per iOS e la tua app. Consulta Guida introduttiva a iOS.

Acquisizione dei dati utente

L'SDK ha due classi da utilizzare con l'API Graph: FBSDKGraphRequest e FBSDKGraphRequestConnection che sono simili a NSURLRequest e NSURLRequestConnectiondel framework Foundation.

Per utilizzare FBSDKGraphRequest devi eseguire la richiesta con un endpoint API Graph specifico. Quindi chiama FBSDKGraphRequestConnection per avviare la richiesta ed elaborarne il completamento.

Per comodità, l'SDK dispone di un metodo startWithCompletionHandler: su FBSDKGraphRequest per creare implicitamente un FBSDKGraphRequestConnection per te.

Ad esempio, per acquisire le informazioni del profilo dell'utente che ha effettuato l'accesso alla tua app, effettua questa chiamata:

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

Richieste batch

Nell'API Graph, puoi eseguire richieste batch con una sola richiesta HTTP. Consulta API Graph, Eseguire richieste batch.

Con l'SDK, puoi creare più richieste e aggiungerle alla stessa istanza FBSDKGraphRequestConnection . Quando è possibile, devi eseguire richieste batch per ridurre al minimo il traffico di rete.

Ad esempio, qui vengono richiesti i "Mi piace" di un utente:

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

Puoi anche specificare i parametri batch con gli overload addRequest:completionHandler: , che includono la capacità di creare un batch con richieste dipendenti.

Condivisione di foto e video

Anche se puoi sempre creare manualmente FBSDKGraphRequests per usare gli endpoint API Graph, l'SDK di Facebook per iOS semplifica la condivisione di foto e video grazie a FBSDKShareKit.framework. Ad esempio, per condividere una 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()

Puoi anche condividere video usando il tipo FBSDKShareVideoContent . Consulta Condivisione su iOS.

Eliminazione di oggetti

Puoi anche eliminare oggetti creati dalla tua app inviando una richiesta DELETE con l'ID dell'oggetto come percorso.

Ad esempio, immagina di aver pubblicato una foto su una Pagina e di aver ricevuto l'ID "1234". Il codice seguente eliminerebbe la foto:

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

Suggerimenti per il debug

Puoi sperimentare e testare le tue richieste con il tool di esplorazione per la API Graph.

Per abilitare la modalità di debug dell'API Graph, consulta Risoluzione dei problemi dell'SDK per iOS, Modalità di debug dell'API Graph.