ต่อไปนี้ครับผมจะพูดให้ท่านรู้จักกับ Graph API มันคือหนทางที่ท่านจะใช้เรียกข้อมูลจากเฟสบุ๊ค ผมจะอธิบายเกี่ยวกับ Graph API อย่างง่ายๆ มันอาจไม่ถูกกับหลักวิชาการมากนัก แต่อ่านแล้วเข้าใจง่ายรับรองว่าเหมาะสำหรับคนที่ต้องการเขียนแอปแต่ไม่อยากหาความรู้ครอบจักรวาล
ก่อนอื่นมาทำความเข้าใจกับคำว่า Graph ในที่นี้กันก่อนครับ
ขออนุญาตแปลบทความจาก https://en.wikipedia.org/wiki/Graph_theory มานะครับเนื่องจากภาษาไทยโดนย่อจนเนื้อหาไม่เหลือเลยครับ
ในวิชาคณิตศาสตร์และวิทยการคอมพิวเตอร์ ทฤษกราฟ (Graph Theory) ศึกษาเกี่ยวกับ กราฟ ซึ่งมีโครงสร้างทางคณิตศาสตร์ที่ใช้ในการสร้างแบบจำลองความสัมพันธ์ระหว่างวัตถุ "กราฟ" ในที่นี้จะสร้างขึ้นจากจุดยอด หรือ โหนดโดยมีเส้นเชื่อมเรียกว่าขอบ ซึ่งกราฟอาจจะไม่เกี่ยวข้องกันคือกราฟไม่มีเส้นเชือมระหว่างจุดยอดทั้งสองจุดในทางกลับกันกราฟที่มีความเกี่ยวข้องกันจะมีขอบเชื่อมโยงสองจุดยอดเข้าด้วยกัน ดู กราฟ(คณิตศาสตร์) สำหรับคำนิยามเพิ่มเติม
ซึ่งถ้าเราลองสังเกตดูนะครับ การใช้เฟสบุ๊คจะมีความสัมพันธ์ระหว่างบุคคลเหมือนกราฟที่ได้กล่าวมาข้างต้น จากภาำนะครับ ผู้หญิง ผู้ชายอาหาร spotify และ netflix เป็นจุดยอด เชื่อมต่อกันด้วยขอบ ต่างๆครับ เรามาลองอ่านความสัมพันธ์ดูครับ แล้วจะเข้าใจความหมายมากขึ้น เช่น จุดยอดผู้หญิงเชื่อมต่อหาจุดยอดผู้ชายด้วยขอบเพื่อน อ่านเป็นภาษาไทยก็จะได้ว่า "ผู้หญิงเป็นเพื่อนผู้ชาย" หรือ จุดยอดผู้หญิงเชื่อมต่อหาจุดยอด Netflix ด้วยขอบดู ก็จะแปลว่าผู้หญิงกำลังดู Netflix นั่นเอง
คราวนี้มาลองเล่นกับ Graph API ของเราบ้างนะครับ
เข้าไปที่ https://developers.facebook.com/tools/explorer เพื่อลองเล่น Graph API กันเลยครับ
ก่อนอื่นครับ ถ้าจะลองเรียกอะไรเราต้องขอสิทธิในการเรียกก่อนครับ เช่น ถ้าผมจะเรียก โพสจากหน้า วอลของผมเอง ต้องขอสิทธิในการเข้าถึง ซึ่งใน Graph Explorer จะทำได้ง่ายมาก (แต่เวลาทำแอปเราต้องเขียนขอสิทธิในฟังก์ชัน FB.login ซึ่งจะพูดถึงในตอนต่อๆไป)
ลองกดเข้าถึงสิทธิในการอ่านโพสเราครับได้จาก Get Access Token > Extended Persmission > ติ๊ก read_stream และกด Get Access Token
มันจะเด้งขึ้นมาขอสิทธิ เพื่อให้เราสามารถเข้าไปเล่นสนุกกับข้อมูลส่วนนั้นได้ครับ
สังเกต ตรงช่อง บริเวณกลางจอครับ จะขึ้นดังภาพ
อธิบายครับ
/v2.1/me?fields=id,name
/v2.1 คือรุ่นของ Graph API ครับ ซึ่งตอนนี้เดินทางมาถึง รุ่น 2.1 แล้ว
/me คือจุดยอด หรือ โหนดครับ ซึ่ง /me ในที่นี้คือจุดยอดที่แทนข้อมูลว่า "เรา" ครับ
?field=id,name คือข้อมูลที่จะเรียกออกมาจุดยอดหรือขอบนั้นครับ ซึ่งในบางจุดยอดจะมีข้อมูลมหาศาลแต่เราต้องการเพียงบางข้อมูลเราสามารถใส่ field เพื่อบอกระบบได้ว่าจะใช้จุดยอดไหนครับ
ลองเรียกข้อมูลหน้าวอลดูนะครับ พิมพ์ว่า /v2.1/me/posts
จะได้ข้อมูลมาดังนี้ครับ สังเกตนะครับ ถ้ามี /อยู่หลัง โหนด สิ่งนั้นจะเป็นขอบครับ จากตัวอย่างคือ /posts เป็นขอบของ /me ซึ่งดูจาก ข้อมูลที่ออกมาเป็น JSON จะสังเกตว่าในช่อง data-> id จะมี id ประมาณว่า 845660548781664_914868131860905 นั่นคือ ไอดีของโพสซึ่งถือว่าเป็นอีกโหนดนะครับ จะได้ความสัมพันธ์ว่า
และเมื่อคลิกที่ id ของโพสและเติม fields=likes จะเห็นว่า มันจะวิ่งตามขอบ likes เพื่อไปดูว่าคนที่ไลค์โพสเรามีใครบ้างครับ
ความสัมพันธ์ตอนนี้จะเป็นว่า
และเมื่อคลิกที่โหนดเธอมันก็จะขยายออกไปเรื่อยๆ จนเมื่อวนครบทั้งระบบมันจะเป็นสภาพประมาณนี้
หวังว่าจะได้รับความรู้ไปไม่มากก็น้อยครับ แล้วตอนหน้าเราก็จะเริ่มเขียนแอปให้ดึงข้อมูลจาก Graph API กันแล้วครับ