託管 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 上的遊戲會以入口網站的形式提供服務,實際的遊戲內容則是由您自己的網頁伺服器託管。透過設定 Facebook 網頁遊戲網址,您可以在 Facebook.com 上提供您的遊戲,將遊戲顯示在 iframe 中。在 Facebook 上,您可以充分利用應用程式中心和遊戲推薦讓您的內容曝光,並使用 Facebook 平台的社交功能讓您的遊戲更具社交性。

如何讓遊戲出現在 Facebook 上

在您的應用程式設定中,有一個 Facebook 網頁遊戲網址欄位。此欄位配置玩家載入遊戲時載入的 iframe。這讓您可以完全控制您的遊戲,且您可以按照自己的發布週期自由更新版本和內容。請在此處查看您的應用程式設定。

Facebook.com 上的玩家載入您的遊戲時,Facebook 將向應用程式設定下提供的 Facebook 網頁遊戲網址發出 HTTP POST 要求。此要求的回應應該是包含您的遊戲用戶端的完整 HTML 回應。您可以使用 Facebook JavaScript SDK 來驗證用戶、與框架互動以及存取遊戲中的對話方塊,因此請務必將其包含在遊戲的 HTML 中。如需 Facebook 遊戲平台登入的詳細資訊,請參閱此處

您的遊戲在 Facebook.com 上顯示的 iframe

向您的 Fcaebook 網頁遊戲網址發出的 HTTP POST 要求將包含其他參數,其中包括包含玩家 Facebook 身分的 signed_request 參數(如果他們已為您的應用程式授予基本權限)。如果玩家是新玩家,signed_request 參數值將有助於驗證該要求確實來自 Facebook。請參閱 Facebook 遊戲平台登入指南,以深入瞭解有關簽署要求的詳細資訊。

網域和 SSL 要求

瀏覽 Facebook.com 時需要 HTTPS,此要求也適用於遊戲內容。因此,在提供遊戲內容時需要有效的 SSL 憑證。當設定網頁伺服器來託管遊戲時,您需要確保其位於您擁有的有效網域中,且您擁有該網域的有效 SSL 憑證。

連入連結

可以將您自己的自訂參數傳遞給遊戲啟用查詢,這對於追蹤 OG Stories、轉介網站的效能或追蹤共享連結的效能非常有用。

有兩種方法可實現此目的:

  1. 查詢參數附加到共享連結末端
  2. 在遊戲的網址路徑上加入相對連結

查詢參數

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. 從 base64url 解碼第二個部分(承載),然後解碼得出的 JSON 物件

如果沒有 user_id 欄位,則玩家尚未向您的遊戲授予 public_profile 權限。

新用戶流程

如果您剖析 signed_request 並發現玩家是新玩家且未向您的遊戲授予基本權限,您可以透過 Javascript SDK 在載入時請求這些權限。

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

您可以選擇透過將權限新增為第二個參數來請求更多權限,例如 email

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

此承載中的其他重要資訊包括玩家的年齡設定和地區偏好設定。請參閱 Facebook 遊戲平台登入以取得詳細資訊。

最佳作法

在本機上開發

開發遊戲時,您可能想要將其託管在本機電腦上執行的網頁伺服器上,以加快編輯-編譯-測試週期。最常見的方法是設定一個伺服器堆疊,例如 XAMPP。您也需要建立並安裝本機 SSL 證書,以使伺服器支援 HTTPS。

移至生產伺服器

一旦準備好將您的遊戲推向全世界,您就必須安排在面對公眾的網站伺服器上託管。

使用 CDN 改善託管效能

隨著流量的成長,您可能需要考慮使用 AkamaiCDNetworks 等內容交付網路 (CDN) 來降低託管成本並提高效能。CDN 是透過在網路上的不同位置快取遊戲內容來運作,這意味著玩家將可以從更近的位置將遊戲資產傳送至他們的用戶端。玩家可以更快載入遊戲,您的伺服器也可以免受過多流量的影響。