Lưu trữ game trên 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.

Game trên Facebook được lưu trữ dưới dạng cổng thông tin, nhưng nội dung game thực tế được lưu trữ trên máy chủ web của chính bạn. Bằng cách đặt cấu hình URL Game trên web của Facebook, bạn có thể cung cấp game của mình trên Facebook.com. Tại đây, game đó sẽ xuất hiện trong iframe. Trên Facebook, bạn có thể tận dụng tối đa Trung tâm ứng dụng và đề xuất game để thu hút mọi người khám phá nội dung của bạn, đồng thời sử dụng các tính năng xã hội của nền tảng Facebook để tăng tính xã hội của game.

Cách đưa game lên Facebook

Trong cài đặt ứng dụng của bạn, có một trường dành cho URL Game trên web của Facebook. Trường này đặt cấu hình iframe để tải khi người chơi tải game của bạn. Trường này giúp bạn có toàn quyền kiểm soát game và thoải mái cập nhật các phiên bản cũng như nội dung theo chu kỳ phát hành của mình. Xem Cài đặt ứng dụng của bạn tại đây.

Khi người chơi trên Facebook.com tải game, Facebook sẽ gửi yêu cầu HTTP POST đến URL Game trên web của Facebook được cung cấp trong Cài đặt ứng dụng. Phản hồi yêu cầu này sẽ là một phản hồi HTML đầy đủ bao gồm ứng dụng game của bạn. Bạn có thể sử dụng Facebook SDK dành cho Javascript để xác thực người dùng, tương tác với khung, cũng như truy cập vào hộp thoại trong game. Vì vậy, hãy đảm bảo thêm SDK đó vào HTML của game. Hãy xem tại đây để biết thêm thông tin về phương thức Đăng nhập cho Game trên Facebook.

iframe nơi game sẽ xuất hiện trên Facebook.com

Yêu cầu HTTP POST được gửi đến URL Game trên web của Facebook sẽ chứa các thông số bổ sung, bao gồm cả thông số signed_request có chứa danh tính Facebook của người chơi nếu họ đã cấp các quyền cơ bản cho ứng dụng của bạn. Trong trường hợp người chơi mới, giá trị thông số signed_request sẽ giúp xác thực rằng yêu cầu này thực sự đến từ Facebook. Hãy đọc thêm về yêu cầu đã ký trong hướng dẫn Đăng nhập cho Game trên Facebook.

Miền và yêu cầu SSL

Bạn cần sử dụng HTTPS khi duyệt Facebook.com. Yêu cầu này cũng áp dụng cho nội dung game. Do đó, bạn cần có chứng chỉ SSL hợp lệ khi phân phối nội dung game của mình. Khi đặt cấu hình máy chủ web để lưu trữ game, bạn cần đảm bảo máy chủ đó nằm trên miền hợp lệ mà mình sở hữu và bạn có chứng chỉ SSL hợp lệ cho miền này.

Liên kết đến

Bạn có thể chuyển thông số tùy chỉnh của chính mình đến truy vấn khởi chạy game. Đây là cách hữu ích để theo dõi hiệu quả của Tin đăng bằng OG, trang web tham chiếu hoặc để theo dõi hiệu quả của liên kết đã chia sẻ.

Có 2 cách để thực hiện hành động này:

  1. Thêm thông số truy vấn vào cuối liên kết được chia sẻ
  2. Thêm liên kết liên quan trên đường dẫn URL của game

Thông số truy vấn

URL cho game trên Facebook sẽ luôn có dạng https://apps.facebook.com/{namespace}/ . Khi cung cấp liên kết quảng cáo, dù từ Trang ứng dụng của bạn hay các vị trí khác trên Internet, bạn có thể thêm thông số truy vấn tại đây. Ví dụ

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

Những thông số truy vấn này sẽ được lưu giữ khi khởi chạy game và được chuyển đến máy chủ của bạn cùng với signed_request.

Bạn cũng có thể chia sẻ liên kết để chuyển trực tiếp người chơi đến các phần của game. Nếu bạn đang sử dụng PHP hoặc có tập lệnh khởi chạy, điều này có thể hữu ích để cho phép người chơi bắt đầu tại các khu vực của game nằm ngoài quy trình tiêu chuẩn. Đường dẫn đầy đủ sẽ được lưu giữ trong yêu cầu đến máy chủ của bạn. Ví dụ: nếu bạn chia sẻ một liên kết đến

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

Facebook sẽ gửi yêu cầu đến

https://{your_web_games_url}/special_launch.php

khi tải iframe cho game của bạn.

Tìm hiểu cách khởi chạy game

Khi người chơi khởi chạy game trên Facebook, thông số truy vấn signed_request sẽ được thêm vào yêu cầu HTTP gửi đến máy chủ của bạn. Bạn có thể giải mã thông số truy vấn signed_request này để cung cấp thông tin về người dùng và chữ ký để xác minh tính bảo mật cũng như tính xác thực của dữ liệu này. Bạn có thể phân tích cú pháp thông số này như sau:

  1. Tách yêu cầu đã ký thành 2 phần được phân định bằng ký tự "." (ví dụ: 238fsdfsd.oijdoifjsidf899)
  2. Giải mã phần đầu tiên - chữ ký được mã hóa - từ base64url
  3. Giải mã phần thứ hai - phần tải dữ liệu - từ base64url rồi giải mã đối tượng JSON thu được

Nếu không có trường user_id, tức là người chơi chưa cấp quyền public_profile cho game của bạn.

Quy trình của người dùng mới

Nếu phân tích cú pháp signed_request và nhận thấy đó là người chơi mới, chưa cấp các quyền cơ bản cho game, bạn có thể yêu cầu các quyền này khi tải thông qua Javascript SDK.

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

Bạn có tùy chọn yêu cầu thêm quyền - chẳng hạn như email - bằng cách thêm các quyền đó làm thông số phụ.

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

Các thông tin quan trọng khác trong phần tải dữ liệu này sẽ là cài đặt độ tuổi và tùy chọn ngôn ngữ cho người chơi. Hãy xem bài viết Đăng nhập cho Game trên Facebook để biết thêm thông tin.

Cách làm tốt nhất

Phát triển trên máy cục bộ

Trong khi phát triển game, có lẽ bạn muốn lưu trữ game đó trên một máy chủ web chạy trên máy cục bộ của mình để tăng tốc chu kỳ chỉnh sửa - biên soạn - thử nghiệm. Cách phổ biến nhất để thực hiện việc đó là thiết lập một ngăn xếp máy chủ như XAMPP. Bạn cũng sẽ cần tạo và cài đặt một chứng chỉ SSL cục bộ để máy chủ này hỗ trợ HTTPS.

Chuyển đến máy chủ chính thức

Khi đã sẵn sàng phát hành chính thức game, bạn sẽ phải sắp xếp để lưu trữ game đó trên một máy chủ web công khai.

Cải thiện hiệu quả lưu trữ với CDN

Khi lưu lượng truy cập tăng, bạn có thể muốn cân nhắc sử dụng mạng phân phối nội dung (CDN) như Akamai hoặc CDNetworks để giảm chi phí lưu trữ và cải thiện hiệu quả. CDN hoạt động bằng cách lưu nội dung game vào bộ nhớ đệm ở nhiều vị trí khác nhau trên Internet. Nghĩa là người chơi sẽ được phân phối các tài sản của game đến ứng dụng của họ từ vị trí gần hơn. Cách này giúp người chơi tải game nhanh hơn và bảo vệ máy chủ của bạn khỏi lưu lượng truy cập quá mức.