चूंकि मैंने सवाल पूछा, ऐप्पल ने एक नई एपीआई पेश की है और उत्तर इस पर उपलब्ध है: Setting up third-party server to interact with Game Center (धन्यवाद, उपयोगकर्ता 2 9 4 9 75 9) और कुछ अन्य स्थानों पर।
Specifically, iOS 7 (Apple documentation on Wayback Machine) के बाद से:
-[GKLocalPlayer generateIdentityVerificationSignatureWithCompletionHandler:]
एक हस्ताक्षर है कि एक तीसरी पार्टी सर्वर स्थानीय खिलाड़ी को प्रमाणित करने के लिए अनुमति देता है उत्पन्न करता है।
प्रासंगिक कॉलबैक ब्लॉक के तर्कों NSURL *publicKeyUrl
, NSData *signature
, NSData *salt
, uint64_t timestamp
शामिल हैं। ये, प्लेयर के playerID
और bundleID
के साथ, सर्वर को 'लॉगिन जानकारी' के रूप में भेज दिया जाना चाहिए।
- इस बिंदु पर, एक, serverside,
publicKeyURL
का उपयोग सार्वजनिक कुंजी
- serverside प्राप्त करने के लिए करना चाहिए, सत्यापित करें कि यह सार्वजनिक कुंजी एप्पल द्वारा हस्ताक्षर किए गए हैं
- serverside, CONCATENATE UTF-8-एन्कोडेड
playerID
, bundleID
, बड़े endian uint64
टाइमस्टैम्प, और शब्दशः salt
- serverside, उत्पन्न SHA-256 से ऊपर की
digest
- serverside निर्माण करने के लिए, सत्यापित करें
signature
है कि सर्वर के लिए भेज दिया गया था, पहले डाउनलोड सार्वजनिक कुंजी, signature
और digest
वहाँ एक example in pseudo-PHP है, एक example of how one would implement this in Objective-C (जो थोड़ा समझ में आता है शब्दशः उपयोग करने के लिए), एक Go implementation, सही है using एक Ruby implementation और उसी प्रश्न पर अन्य भाषाओं में कार्यान्वयन का वर्गीकरण है।
अनजाने में, गो में कार्यान्वयन विशेष रूप से पठनीय लगता है, लेकिन यह सत्यापित नहीं करता है कि ऐप्पल द्वारा सार्वजनिक कुंजी जारी की गई थी। लिंक्ड रूबी कार्यान्वयन में ऐसा करने का एक स्पष्ट उदाहरण है।
स्रोत
2015-09-24 11:52:28
इस प्रश्न का उत्तर है: http://stackoverflow.com/questions/15755489/setting-up-third-party-server-to-interact-with-game-center –