การใช้ API กราฟ, iOS

ใช้ API กราฟเพื่อรับข้อมูลที่เข้าและออกจากกราฟสังคมของ Facebook

ซึ่งได้แก่

  • การดึงข้อมูลโปรไฟล์เพื่อให้บริบททางสังคม
  • การดึงข้อมูลผู้ใช้ เช่น การถูกใจหรือรูปภาพ
  • เผยแพร่โพสต์ (รวมถึงวิดีโอหรือรูปภาพ) ไปยัง Facebook
  • การเผยแพร่ข้อมูล Open Graph ไปยัง Facebook
  • ดูฟีเจอร์เพิ่มเติมที่เอกสารประกอบเกี่ยวกับ API กราฟ

คู่มือนี้อธิบายถึงวิธีทำงานกับ 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 กราฟ