Vì tôi đã đặt câu hỏi, Apple đã giới thiệu một API mới và câu trả lời có sẵn trên: Setting up third-party server to interact with Game Center (cảm ơn bạn, user2949759) và trên một vài địa điểm khác.
Specifically, vì iOS 7 (Apple documentation on Wayback Machine):
-[GKLocalPlayer generateIdentityVerificationSignatureWithCompletionHandler:]
Tạo một chữ ký cho phép một máy chủ của bên thứ ba để xác thực các cầu thủ địa phương.
luận Các callback khối có liên quan bao gồm NSURL *publicKeyUrl
, NSData *signature
, NSData *salt
, uint64_t timestamp
. Những điều này, cùng với playerID
và bundleID
của người chơi, phải được chuyển tới máy chủ dưới dạng 'thông tin đăng nhập'.
- Tại thời điểm này, ta nên, serverside, sử dụng
publicKeyURL
để có được công chúng quan trọng
- serverside, xác minh rằng khóa công khai này đã được ký kết bởi Apple
- serverside, concatenate UTF-8-mã hóa
playerID
, bundleID
, lớn-endian uint64
dấu thời gian, và đúng nguyên văn salt
- serverside, tạo SHA-256 của các bên trên để sản xuất
digest
- serverside, xác minh
signature
đã được vận chuyển đến máy chủ là đúng, using khóa công khai đã tải về trước đó, signature
và digest
Có một example in pseudo-PHP, một example of how one would implement this in Objective-C (mà làm cho chút ý thức sử dụng đúng nguyên văn), một Go implementation, một Ruby implementation và có một loại triển khai bằng các ngôn ngữ khác trên cùng một câu hỏi đó.
Không có gì ngạc nhiên khi việc triển khai trong Go dường như có thể đọc được, nhưng nó không xác minh rằng khóa công khai được phát hành bởi Apple. Việc triển khai Ruby được liên kết có chứa một ví dụ khá rõ ràng về cách thực hiện điều đó.
Nguồn
2015-09-24 11:52:28
Câu hỏi này có câu trả lời: http://stackoverflow.com/questions/15755489/setting-up-third-party-server-to-interact-with-game-center –