ภาพรวม

API กราฟเป็นวิธีหลักในการนำข้อมูลเข้าและออกจากแพลตฟอร์ม Facebook โดยเป็น API ที่อยู่บน HTTP ซึ่งแอพสามารถใช้เพื่อสืบค้นข้อมูล โพสต์เรื่องราวใหม่ๆ จัดการโฆษณา อัพโหลดรูปภาพ และทำงานอื่นๆ ได้อีกมากมายหลากหลายด้วยโปรแกรม

API กราฟตั้งชื่อมาจากแนวคิด "กราฟสังคม" ซึ่งแสดงถึงข้อมูลบน Facebook และประกอบด้วยโหนด จุดเชื่อมโยง และช่องต่างๆ โดยปกติแล้ว คุณจะใช้โหนดเพื่อรับข้อมูลเกี่ยวกับอ็อบเจ็กต์เฉพาะรายการ ใช้จุดเชื่อมโยงเพื่อรับคอลเลกชั่นของอ็อบเจ็กต์ในอ็อบเจ็กต์เดี่ยว และใช้ช่องต่างๆ เพื่อรับข้อมูลเกี่ยวกับอ็อบเจ็กต์เดี่ยวหรืออ็อบเจ็กต์แต่ละตัวในคอลเลกชั่น ในเอกสารของเรา เราอาจกล่าวถึงโหนดและจุดเชื่อมโยงว่าเป็น "ตำแหน่งข้อมูล" ตัวอย่างเช่น "ส่งคำขอ GET ไปยังตำแหน่งข้อมูลผู้ใช้"

HTTP

การถ่ายโอนข้อมูลทุกครั้งจะสอดคล้องกับ HTTP/1.1 และตำแหน่งข้อมูลทั้งหมดจะต้องใช้ HTTPS และเนื่องจาก API กราฟทำงานอยู่บน HTTP ดังนั้นจึงทำงานได้กับทุกภาษาที่มีไลบรารี HTTP เช่น cURL และ urllib ซึ่งหมายความว่าคุณสามารถใช้ API กราฟได้โดยตรงในเบราว์เซอร์ ตัวอย่างเช่น การส่งคำขอ URL นี้ในเบราว์เซอร์ของคุณ...

https://graph.facebook.com/facebook/picture?redirect=false

... เทียบเท่ากับการส่งคำขอ cURL นี้:

curl -i -X GET "https://graph.facebook.com/facebook/picture?redirect=false"

นอกจากนี้ เรายังได้เปิดใช้งานคำสั่ง HSTS includeSubdomains บน facebook.com แต่จะไม่ส่งผลกระทบต่อการเรียกใช้ API กราฟของคุณ

URL โฮสต์

คำขอเกือบทั้งหมดจะถูกส่งผ่านไปยัง URL โฮสต์ graph.facebook.com ยกเว้นเฉพาะวิดีโอที่อัพโหลดซึ่งจะใช้ graph-video.facebook.com แทน

โทเค็นการเข้าถึง

โทเค็นการเข้าถึงทำให้แอพของคุณสามารถเข้าถึง API กราฟได้ ตำแหน่งข้อมูล API กราฟเกือบทุกตำแหน่งต้องใช้โทเค็นการเข้าถึงบางประเภท ดังนั้น ในแต่ละครั้งที่คุณเข้าถึงตำแหน่งข้อมูล คำขอของคุณอาจต้องใช้โทเค็นการเข้าถึง 1 รายการ โดยปกติแล้ว โทเค็นการเข้าถึงจะมี 2 ฟังก์ชั่น:

  • โทเค็นการเข้าถึงทำให้แอพของคุณสามารถเข้าถึงข้อมูลของผู้ใช้ได้โดยไม่ต้องใช้รหัสผ่านของผู้ใช้ ตัวอย่างเช่น แอพของคุณจำเป็นต้องใช้อีเมลของผู้ใช้เพื่อดำเนินการ หากผู้ใช้ยินยอมให้แอพของคุณดึงข้อมูลอีเมลของตนจาก Facebook แอพของคุณก็จะได้รับอีเมลของผู้ใช้รายดังกล่าวโดยที่ผู้ใช้ไม่จำเป็นต้องป้อนรหัสผ่าน Facebook
  • โทเค็นการเข้าถึงทำให้เราสามารถระบุแอพของคุณ ผู้ใช้ที่กำลังใช้แอพของคุณ และประเภทของข้อมูลที่ผู้ใช้อนุญาตให้แอพของคุณเข้าถึงได้

ไปที่เอกสารประกอบโทเค็นการเข้าถึงเพื่อเรียนรู้เพิ่มเติม

โหนด

โหนดคืออ็อบเจ็กต์แยกที่มี ID เฉพาะสำหรับแต่ละตัว ตัวอย่างเช่น มีอ็อบเจ็กต์โหนดผู้ใช้จำนวนมาก ซึ่งอ็อบเจ็กต์แต่ละตัวจะมี ID เฉพาะที่แสดงแทนแต่ละคนบน Facebook โดยเพจ กลุ่ม โพสต์ รูปภาพ และความคิดเห็นเป็นเพียงโหนดบางประเภทของกราฟสังคมของ Facebook เท่านั้น

ตัวอย่าง cURL ต่อไปนี้แสดงการเรียกโหนดผู้ใช้

curl -i -X GET \
  "https://graph.facebook.com/USER-ID?access_token=ACCESS-TOKEN"

คำขอนี้จะส่งคืนข้อมูลต่อไปนี้ตามค่าเริ่มต้น ซึ่งจัดรูปแบบโดยใช้ JSON:

{
  "name": "Your Name",
  "id": "YOUR-USER-ID"
}

เมตาดาต้าของโหนด

คุณสามารถขอรับรายการช่องทั้งหมด ซึ่งประกอบด้วยชื่อช่อง คำอธิบาย และประเภทข้อมูล ของอ็อบเจ็กต์โหนดได้ เช่น ผู้ใช้ เพจ หรือรูปภาพ ส่งคำขอ GET ไปยัง ID อ็อบเจ็กต์และใส่พารามิเตอร์ metadata=1:

curl -i -X GET \
  "https://graph.facebook.com/USER-ID?
    metadata=1&access_token=ACCESS-TOKEN"

การตอบกลับ JSON ที่ส่งคืนจะมีคุณสมบัติ metadata ซึ่งแสดงรายการช่องที่รองรับทั้งหมดสำหรับโหนดที่ระบุ:

{
  "name": "Jane Smith",
  "metadata": {
    "fields": [
      {
        "name": "id",
        "description": "The app user's App-Scoped User ID. This ID is unique to the app and cannot be used by other apps.",
        "type": "numeric string"
      },
      {
        "name": "age_range",
        "description": "The age segment for this person expressed as a minimum and maximum age. For example, more than 18, less than 21.",
        "type": "agerange"
      },
      {
        "name": "birthday",
        "description": "The person's birthday.  This is a fixed format string, like `MM/DD/YYYY`.  However, people can control who can see the year they were born separately from the month and day so this string can be only the year (YYYY) or the month + day (MM/DD)",
        "type": "string"
      },
...

/me

โหนด /me เป็นตำแหน่งข้อมูลพิเศษที่แปลงเป็น ID อ็อบเจ็กต์ของบุคคลหรือเพจที่เป็นเจ้าของโทเค็นการเข้าถึงที่กำลังเรียกใช้ API หากคุณมีโทเค็นการเข้าถึงของผู้ใช้ คุณสามารถดึงชื่อและ ID ของผู้ใช้ได้โดยใช้:

curl -i -X GET \
  "https://graph.facebook.com/me?access_token=ACCESS-TOKEN"

จุดเชื่อมโยง

จุดเชื่อมโยงเป็นการเชื่อมต่อระหว่างโหนด 2 รายการ ตัวอย่างเช่น โหนดผู้ใช้อาจมีรูปภาพที่เชื่อมต่อกัน และโหนดรูปภาพอาจมีความคิดเห็นที่เชื่อมต่อกัน ตัวอย่าง cURL ต่อไปนี้จะส่งคืนรายการรูปภาพที่มีคนเผยแพร่บน Facebook

curl -i -X GET \
  "https://graph.facebook.com/USER-ID/photos?access_token=ACCESS-TOKEN"

แต่ละ ID ที่ส่งคืนจะแสดงโหนดรูปภาพและเวลาที่อัพโหลดลงบน Facebook

    {
  "data": [
    {
      "created_time": "2017-06-06T18:04:10+0000",
      "id": "1353272134728652"
    },
    {
      "created_time": "2017-06-06T18:01:13+0000",
      "id": "1353269908062208"
    }
  ],
}

ช่อง

ช่องเป็นคุณสมบัติของโหนด เมื่อคุณสืบค้นโหนดหรือจุดเชื่อมโยง ระบบจะส่งคืนชุดของช่องตามค่าเริ่มต้นอย่างที่เห็นในตัวอย่างข้างต้น แต่คุณสามารถระบุได้ว่าต้องการให้ระบบส่งคืนช่องใดโดยใช้พารามิเตอร์ fields และระบุแต่ละช่อง การดำเนินการนี้จะไปแทนที่ค่าเริ่มต้นและจะส่งคืนเฉพาะช่องที่คุณระบุ รวมถึง ID ของอ็อบเจ็กต์ที่ส่งคืนทุกครั้ง

คำขอ cURL ต่อไปนี้มีพารามิเตอร์ fields และชื่อ อีเมล และรูปโปรไฟล์ของผู้ใช้

curl -i -X GET \
  "https://graph.facebook.com/USER-ID?fields=id,name,email,picture&access_token=ACCESS-TOKEN"

ข้อมูลที่ส่งคืน

{
  "id": "USER-ID",
  "name": "EXAMPLE NAME",
  "email": "EXAMPLE@EMAIL.COM",
  "picture": {
    "data": {
      "height": 50,
      "is_silhouette": false,
      "url": "URL-FOR-USER-PROFILE-PICTURE",
      "width": 50
    }
  }
}

พารามิเตอร์ที่ซับซ้อน

พารามิเตอร์เกือบทุกประเภทจะเป็นแบบพื้นฐานที่เข้าใจง่าย เช่น bool, string และ int แต่ยังมีประเภท list และ object ที่อาจระบุอยู่ในคำขอได้

ประเภท list จะได้รับการระบุในรูปแบบคำสั่ง JSON ตัวอย่างเช่น: ["firstitem", "seconditem", "thirditem"]

ประเภท object จะได้รับการระบุในรูปแบบคำสั่ง JSON เช่นกัน ตัวอย่างเช่น: {"firstkey": "firstvalue", "secondKey": 123}

การเผยแพร่ การอัพเดต และการลบ

ไปที่คู่มือการแชร์ของ Facebook เพื่อเรียนรู้วิธีเผยแพร่ไปยัง Facebook ของผู้ใช้หรือไปที่เอกสารประกอบ API เพจเพื่อเผยแพร่ไปยังฟีด Facebook ของเพจ

โหนดบางรายการช่วยให้คุณสามารถอัพเดตช่องด้วยการดำเนินการ POST ได้ ตัวอย่างเช่น คุณสามารถอัพเดตช่อง email ในลักษณะเช่นนี้ได้:

curl -i -X POST \
  "https://graph.facebook.com/USER-ID?email=YOURNEW@EMAILADDRESS.COM&access_token=ACCESS-TOKEN"

อ่าน-หลังจาก-เขียน

สำหรับการสร้างและอัพเดตตำแหน่งข้อมูล API กราฟสามารถอ่านอ็อบเจ็กต์ที่เผยแพร่หรืออัพเดตเรียบร้อยแล้วได้ในทันที และส่งกลับช่องใดๆ ที่รองรับตำแหน่งข้อมูลการอ่านที่สอดคล้องกัน

ระบบจะส่งคืน ID ของอ็อบเจ็กต์ที่สร้างหรืออัพเดตแล้วตามค่าเริ่มต้น หากต้องการเพิ่มข้อมูลในการตอบกลับ ให้ใส่พารามิเตอร์ fields ในคำขอและระบุช่องที่ต้องการให้ส่งคืน ตัวอย่างเช่น หากต้องการเผยแพร่ข้อความว่า “Hello” ไปยังฟีดของเพจ คุณสามารถสร้างคำขอได้ดังนี้:

curl -i - X POST "https://graph.facebook.com/PAGE-ID/feed?message=Hello&
  fields=created_time,from,id,message&access_token=ACCESS-TOKEN"
ตัวอย่างโค้ดข้างต้นได้รับการจัดรูปแบบเพื่อให้อ่านได้ง่ายขึ้น

การดำเนินการนี้จะส่งกลับช่องที่กำหนดมาในรูปแบบ JSON ดังเช่น:

{
  "created_time": "2017-04-06T22:04:21+0000",
  "from": {
    "name": "My Facebook Page",
    "id": "PAGE-ID"
  },
  "id": "POST_ID",
  "message": "Hello",
}

โปรดดูเอกสารข้อมูลอ้างอิงของแต่ละตำแหน่งข้อมูลเพื่อดูว่าตำแหน่งข้อมูลรองรับอ่าน-หลังจาก-เขียนหรือไม่ และสามารถใช้ช่องใดได้บ้าง

ข้อผิดพลาด

หากการอ่านดำเนินการไม่สำเร็จไม่ว่าจะด้วยเหตุผลใด (ตัวอย่างเช่น มีการขอช่องที่ไม่มีอยู่) API กราฟจะตอบกลับด้วยข้อผิดพลาดมาตรฐาน ไปที่คู่มือการจัดการข้อผิดพลาดของเราเพื่อดูข้อมูลเพิ่มเติม

คุณสามารถลบโหนด เช่น โหนดโพสต์หรือโหนดรูปภาพ ได้ตามปกติโดยดำเนินการ DELETE ใน ID อ็อบเจ็กต์

curl -i -X DELETE \
  "https://graph.facebook.com/PHOTO-ID?access_token=ACCESSS-TOKEN"

โดยปกติแล้ว คุณสามารถลบได้เฉพาะโหนดที่คุณสร้างเท่านั้น แต่โปรดตรวจสอบคู่มืออ้างอิงของโหนดแต่ละรายการเพื่อดูข้อกำหนดสำหรับการดำเนินการลบ

Webhooks

คุณสามารถรับการแจ้งเตือนเมื่อมีการเปลี่ยนแปลงโหนดหรือการโต้ตอบกับโหนดได้โดยการสมัครรับข้อมูล Webhooks โปรดดูที่ Webhooks

เวอร์ชั่น

API กราฟมีด้วยกันหลายเวอร์ชั่น ซึ่งจะเปิดตัวในทุกๆ ไตรมาส คุณสามารถระบุเวอร์ชั่นที่ต้องการในการเรียกได้โดยเพิ่ม "v" พร้อมใส่หมายเลขเวอร์ชั่นไว้ที่จุดเริ่มต้นของเส้นทางคำขอ ตัวอย่างเช่น การเรียกใช้เวอร์ชั่น 4.0 จะมีลักษณะดังนี้:

curl -i -X GET \
  "https://graph.facebook.com/v4.0/USER-ID/photos
    ?access_token=ACCESS-TOKEN"

หากคุณไม่ได้ระบุหมายเลขเวอร์ชั่น เราจะเลือกใช้เวอร์ชั่นเก่าที่สุดที่พร้อมใช้งานเป็นค่าเริ่มต้นให้กับคุณ เราจึงขอแนะนำให้คุณระบุหมายเลขเวอร์ชั่นในคำขอ

คุณสามารถอ่านข้อมูลเพิ่มเติมเกี่ยวกับเวอร์ชั่นต่างๆ ได้ในคู่มือการกำหนดเวอร์ชั่นของเราและเรียนรู้เพิ่มเติมเกี่ยวกับเวอร์ชั่นที่ใช้ได้ทั้งหมดในบันทึกการเปลี่ยนแปลงของ API กราฟ

API, SDK และแพลตฟอร์มของ Facebook

เชื่อมต่ออินเทอร์เฟซและพัฒนาบนแพลตฟอร์มต่างๆ โดยใช้ API, SDK และแพลตฟอร์มต่างๆ ของ Facebook ที่มีให้เลือกใช้อย่างหลากหลาย

ขั้นตอนถัดไป

เริ่มต้นใช้งาน API กราฟ มาสำรวจกราฟสังคมของ Facebook โดยใช้เครื่องมือ Graph Explorer และส่งคำขอสัก 2-3 รายการเพื่อรับข้อมูลกัน