Usa l'API Graph per permettere l'ingresso e l'uscita dei dati dal social graph di Facebook.
Questo include:
Questa guida descrive come usare l'API Graph con l'SDK di Facebook per iOS.
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.
L'SDK ha due classi da utilizzare con l'API Graph: FBSDKGraphRequest
e FBSDKGraphRequestConnection
che sono simili a NSURLRequest
e NSURLRequestConnection
del 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)") } }
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.
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.
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") } } }
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.