ใช้ API กราฟเพื่อรับข้อมูลที่เข้าและออกจากกราฟสังคมของ Facebook
ซึ่งได้แก่
คู่มือนี้อธิบายถึงวิธีทำงานกับ API กราฟโดยใช้ Facebook SDK สำหรับ iOS
การเรียก API กราฟจำเป็นต้องมีผู้ใช้เข้าสู่ระบบแอพของคุณผ่าน Facebook และให้สิทธิ์การอนุญาตสำหรับแอพของคุณ
ตัวอย่างเช่น หากคุณต้องการดึงข้อมูลอีเมลของผู้ใช้บางราย แอพของคุณต้องได้รับสิทธิ์การอนุญาต email
โปรดตรวจสอบให้แน่ใจว่าคุณคุ้นเคยกับการดำเนินการต่อไปนี้
นอกจากนี้ คุณต้องตั้งค่าสภาพแวดล้อมสำหรับการพัฒนาให้กับ iOS SDK และตั้งค่าแอพของคุณ โปรดดูคู่มือเกี่ยวกับ iOS และการเริ่มต้นใช้งาน
SDK มีคลาสที่ใช้ทำงานกับ API กราฟอยู่ 2 คลาส ได้แก่ FBSDKGraphRequest
และ FBSDKGraphRequestConnection
ซึ่งคล้ายกับ NSURLRequest
และ NSURLRequestConnection
ของกรอบโครงสร้างพื้นฐาน
หากต้องการใช้ FBSDKGraphRequest
ให้ระบุคำขอพร้อมตำแหน่งข้อมูลของ API กราฟรายการใดรายการหนึ่ง จากนั้นเรียก FBSDKGraphRequestConnection
เพื่อเริ่มต้นคำขอและดำเนินการให้เสร็จสิ้น
เพื่อความสะดวก SDK จะมีเมธอด startWithCompletionHandler:
ใน FBSDKGraphRequest
เพื่อสร้าง 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 SDK สำหรับ iOS ก็จะช่วยให้สามารถแชร์รูปภาพและวิดีโอด้วย 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
ที่มี ID ของอ็อบเจ็กต์เป็นเส้นทางของกราฟ
ตัวอย่างเช่น สมมติว่าคุณเผยแพร่รูปภาพไปยังเพจ และได้รับ ID "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") } } }
คุณสามารถทดลองและทดสอบคำขอของคุณด้วย Graph API Explorer
นอกจากนี้ คุณสามารถเปิดใช้งานโหมดแก้ไขจุดบกพร่อง API กราฟได้อีกด้วย โปรดดูที่การแก้ไขปัญหา iOS SDK, โหมดแก้ไขจุดบกพร่อง API กราฟ