若要呼叫圖形 API,則需要有人透過 Facebook 登入您的應用程式,然後授權給應用程式的權限。
例如,如果您想要擷取某人的電子郵件地址,則您的應用程式必須取得 email
權限授權。請務必熟悉:
您還必須設定適用於 iOS SDK 的開發環境以及應用程式,請參閱 iOS 快速入門指南。
SDK 有兩種類別可以使用圖形 API:FBSDKGraphRequest
和 FBSDKGraphRequestConnection
,其與 Foundation 架構的 NSURLRequest
和 NSURLRequestConnection
類似。
若要使用 FBSDKGraphRequest
,您應透過特定圖形 API 端點提出要求,然後呼叫 FBSDKGraphRequestConnection
啟動要求並處理其完成作業。
為了方便起見,SDK 具有適用於 FBSDKGraphRequest
的 startWithCompletionHandler:
方法,可為您以暗示方式建立 FBSDKGraphRequestConnection
。
例如,若要擷取已登入應用程式的用戶個人檔案資訊,請執行此呼叫:
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)") } }
在圖形 API 中,您可以透過單一 HTTP 要求提出批次要求,請參閱提出圖形 API 批次要求。
您可以使用 SDK 建構多個要求,並將要求新增到同一個 FBSDKGraphRequestConnection
執行個體中。為將網路流量降到最低,您應盡量採用批次要求。
在此範例中,我們要求取得某人的按讚資料:
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() }
您也可以使用 addRequest:completionHandler:
重載(具有以獨立要求建立批次的功能)指定批次參數。
您除了可以隨時手動建立 FBSDKGraphRequests
以使用圖形 API 端點,還可以利用 Facebook iOS SDK,此 SDK 利用 FBSDKShareKit.framework
簡化分享相片和影片的程序。例如,若要分享相片:
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()
您也可以使用 FBSDKShareVideoContent
類型分享影片。請參閱在 iOS 上分享。
您也可以將物件編號做為圖形路徑來傳送 DELETE
要求,如此即可刪除應用程式建立的物件。
例如,假設您在粉絲專頁發佈一張相片,收到的編號是「1234」。下列程式碼將刪除該相片:
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") } } }