การโฮสต์เกมบน Facebook

The Web Games on Facebook and Facebook Gameroom platforms are no longer available for new submissions. This documentation is intended solely for developers with existing games. To learn more, read our blog post.

เกมบน Facebook จะได้รับการโฮสต์ในรูปแบบพอร์ทัล ส่วนเนื้อหาเกมจริงๆ จะได้รับการโฮสต์จากเว็บเซิร์ฟเวอร์ของคุณเอง เมื่อกำหนดค่า URL ของเกมบนเว็บ Facebook คุณจะสามารถทำให้เกมพร้อมให้บริการบน Facebook.com ได้ โดยเกมจะปรากฏอยู่ภายใน iframe คุณสามารถใช้ประโยชน์สูงสุดจากศูนย์รวมแอพและเกมที่แนะนำบน Facebook ได้ เพื่อช่วยให้ผู้คนค้นพบเนื้อหาของคุณ และใช้ฟีเจอร์โซเชียลต่างๆ ของแพลตฟอร์ม Facebook เพื่อให้เกิดปฏิสัมพันธ์ภายในเกมของคุณเพิ่มมากขึ้น

ลักษณะที่เกมจะปรากฏบน Facebook

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

เมื่อผู้เล่นบน Facebook.com โหลดเกมของคุณ Facebook ก็จะส่งคำขอ HTTP POST ไปยัง URL ของเกมบนเว็บ Facebook ที่ระบุไว้ใน "การตั้งค่าแอพ" การตอบกลับคำขอนี้ควรเป็นการตอบกลับแบบ HTML เต็มรูปแบบที่มีไคลเอ็นต์สำหรับเกมของคุณอยู่ คุณสามารถใช้ Facebook SDK สำหรับ JavaScript เพื่อยืนยันตัวตนของผู้ใช้ โต้ตอบกับเฟรม และเข้าถึงกล่องโต้ตอบในเกมได้ ดังนั้นอย่าลืมระบุไว้ใน HTML สำหรับเกมของคุณด้วย โปรดดูข้อมูลเพิ่มเติมเกี่ยวกับการเข้าสู่ระบบสำหรับเกมบน Facebook ที่นี่

iframe ที่เกมของคุณจะปรากฏอยู่บน Facebook.com

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

โดเมนและข้อกำหนด SSL

คุณจำเป็นต้องใช้ HTTPS เมื่อดู Facebook.com และข้อกำหนดนี้จะมีผลกับเนื้อหาเกมด้วยเช่นกัน ดังนั้น คุณจึงต้องมีใบรับรอง SSL ที่ถูกต้องเมื่อนำเสนอเนื้อหาเกม เมื่อกำหนดค่าเว็บเซิร์ฟเวอร์ที่จะใช้โฮสต์เกม คุณจะต้องตรวจสอบให้แน่ใจว่าอยู่ในโดเมนที่ถูกต้องซึ่งคุณเป็นเจ้าของ และคุณมีใบรับรอง SSL ที่ถูกต้องสำหรับโดเมนนี้

ลิงก์ขาเข้า

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

ซึ่งทำได้ 2 วิธีดังนี้

  1. นำพารามิเตอร์การสืบค้นไปต่อท้ายลิงก์ที่แชร์ของคุณ
  2. เพิ่มลิงก์ที่เกี่ยวข้องลงในพาธ URL ของเกม

พารามิเตอร์การสืบค้น

URL สำหรับเกมบน Facebook ของคุณจะเป็น https://apps.facebook.com/{namespace}/ อยู่เสมอ เมื่อให้ลิงก์โปรโมท ไม่ว่าจะมาจากเพจแอพหรือที่อื่นๆ ในอินเทอร์เน็ต คุณจะสามารถนำพารามิเตอร์การสืบค้นมาต่อท้ายตรงนี้ได้ ตัวอย่างเช่น

https://apps.facebook.com/{namespace}/?source=mysourceid

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

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

https://apps.facebook.com/{namespace}/special_launch.php

Facebook ก็จะส่งคำขอไปยัง

https://{your_web_games_url}/special_launch.php

เมื่อโหลด iframe สำหรับเกมของคุณ

การทำความเข้าใจการเปิดใช้เกม

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

  1. แยกคำขอที่ลงชื่อเป็นสองส่วนด้วยเครื่องหมาย '.' (เช่น 238fsdfsd.oijdoifjsidf899)
  2. ถอดรหัสส่วนแรก (ซึ่งก็คือลายเซ็นที่มีการเข้ารหัส) ออกจาก base64url
  3. ถอดรหัสส่วนที่ 2 (ซึ่งก็คือเพย์โหลด) ออกจาก base64url จากนั้นจึงถอดรหัสอ็อบเจ็กต์ JSON ที่ได้

หากไม่มีช่อง user_id อยู่ แสดงว่าผู้เล่นยังไม่ได้ให้สิทธิ์การอนุญาต public_profile กับเกมของคุณ

ขั้นตอนของผู้ใช้ใหม่

หากคุณแยกวิเคราะห์ signed_request และพบว่าเป็นผู้เล่นใหม่ที่ยังไม่ได้ให้สิทธิ์การอนุญาตพื้นฐานแก่เกมของคุณ คุณสามารถขอสิทธิ์การอนุญาตเหล่านี้ขณะโหลดผ่าน Javascript SDK ได้

FB.login(function(response){
  // Handle the response
});

คุณสามารถเลือกขอสิทธิ์การอนุญาตเพิ่มเติมได้ เช่น email โดยการเพิ่มเป็นพารามิเตอร์ที่ 2

FB.login(function(response) {
  // Handle the response
}, {scope: 'email'});

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

หลักปฏิบัติที่ดีที่สุด

การพัฒนาบนเครื่องเฉพาะที่

ขณะที่กำลังพัฒนาเกมอยู่ คุณอาจจะต้องการโฮสต์เกมไว้บนเว็บเซิร์ฟเวอร์ที่ทำงานอยู่บนเครื่องเฉพาะที่ของคุณ เพื่อช่วยให้รอบการแก้ไข-คอมไพล์-ทดสอบของคุณเป็นไปโดยเร็วยิ่งขึ้น วิธีที่ใช้กันมากที่สุดในการทำเช่นนี้ก็คือการสร้างสแต็กเซิร์ฟเวอร์ เช่น XAMPP นอกจากนี้ คุณยังต้องสร้างและติดตั้งใบรับรอง SSL เฉพาะที่เพื่อให้เซิร์ฟเวอร์นี้รองรับ HTTPS

การย้ายไปยังเซิร์ฟเวอร์ที่ใช้งานจริง

เมื่อพร้อมจะเปิดให้ผู้คนทั่วโลกได้เล่นเกมของคุณ คุณจะต้องจัดให้มีการโฮสต์บนเว็บเซิร์ฟเวอร์ที่เปิดสู่สาธารณะ

การพัฒนาประสิทธิภาพการโฮสต์ด้วย CDN

ขณะที่มีปริมาณการใช้งานเพิ่มขึ้น คุณอาจจำเป็นต้องพิจารณาใช้เครือข่ายการแสดงเนื้อหา (CDN) เช่น Akamai หรือ CDNetworks เพื่อลดค่าใช้จ่ายในการโฮสต์ของคุณและเพื่อปรับปรุงประสิทธิภาพ CDN ทำงานโดยการแคชเนื้อหาเกมของคุณในตำแหน่งต่างๆ บนอินเทอร์เน็ต ซึ่งหมายความว่าผู้เล่นจะมีการส่งองค์ประกอบในเกมไปยังไคลเอ็นต์ของตนจากตำแหน่งที่ใกล้ยิ่งขึ้น ผู้เล่นของคุณจะโหลดเกมได้รวดเร็วขึ้น และเซิร์ฟเวอร์ของคุณได้รับการปกป้องไม่ให้มีปริมาณการใช้งานมากเกินไป