Seit ich die Frage gestellt habe, hat Apple eine neue API eingeführt und die Antwort ist verfügbar unter: Setting up third-party server to interact with Game Center (danke, user2949759) und an einigen anderen Orten.
Specifically, da iOS 7 (Apple documentation on Wayback Machine):
-[GKLocalPlayer generateIdentityVerificationSignatureWithCompletionHandler:]
Erzeugt eine Signatur, die von einem fremden Server ermöglicht die lokale Spieler zu authentifizieren.
Der entsprechende Callback-Block Argumente umfassen NSURL *publicKeyUrl
, NSData *signature
, NSData *salt
, uint64_t timestamp
. Diese sollten zusammen mit den Playern playerID
und bundleID
als "Anmeldeinformationen" an den Server gesendet werden.
- An dieser Stelle sollte man, server verwenden
publicKeyURL
den öffentlichen Schlüssel
- server zu erhalten, stellen Sie sicher, dass dieser öffentliche Schlüssel von Apple
- server, verketten UTF-8-kodierten unterzeichnet
playerID
, bundleID
, big-endian uint64
Zeitstempel und wörtlich salt
- server erzeugen SHA-256 der oben
digest
- server zu erzeugen, verifizieren die
signature
, die an den Server geliefert wurden, korrekt ist, using die öffentlichen Schlüssel zuvor heruntergeladen hat, die signature
und die digest
Es gibt eine example in pseudo-PHP, ein example of how one would implement this in Objective-C (was wenig Sinn zu verwenden wörtlich macht), ein Go implementation, ein Ruby implementation und Es gibt eine Reihe von Implementierungen in anderen Sprachen zu derselben Frage.
Es überrascht nicht, die Implementierung in Go scheint besonders lesbar, aber es überprüft nicht, dass der öffentliche Schlüssel von Apple ausgestellt wurde. Die verknüpfte Ruby-Implementierung enthält ein ziemlich klares Beispiel dafür.
Diese Frage hat die Antwort: http://stackoverflow.com/questions/15755489/setting-up-third-party-server-to-interact-with-game-center –