Firebase पर बनाए गए Apple प्लैटफ़ॉर्म के गेम में खिलाड़ियों को साइन इन करने के लिए, Game Center का इस्तेमाल किया जा सकता है. Firebase की मदद से, Game Center में साइन इन करने की सुविधा का इस्तेमाल करने के लिए, पहले पक्का करें कि स्थानीय खिलाड़ी ने Game Center में साइन इन किया हो. इसके बाद, GameCenterAuthProvider
ऑब्जेक्ट का इस्तेमाल करके Firebase क्रेडेंशियल जनरेट करें. इसका इस्तेमाल, Firebase से पुष्टि करने के लिए किया जा सकता है.
शुरू करने से पहले
Firebase डिपेंडेंसी इंस्टॉल और मैनेज करने के लिए, Swift Package Manager का इस्तेमाल करें.
अपने Apple प्रोजेक्ट में Firebase SDK टूल जोड़ने के अलग-अलग तरीकों के बारे में जानने के लिए,- Xcode में, अपना ऐप्लिकेशन प्रोजेक्ट खोलकर, फ़ाइल > पैकेज जोड़ें पर जाएं.
- जब कहा जाए, तब Firebase के Apple प्लैटफ़ॉर्म के SDK टूल का रिपॉज़िटरी जोड़ें:
- Firebase Authentication लाइब्रेरी चुनें.
- अपने टारगेट की बिल्ड सेटिंग के अन्य लिंकर फ़्लैग सेक्शन में
-ObjC
फ़्लैग जोड़ें. - प्रोसेस पूरी होने के बाद, Xcode बैकग्राउंड में आपकी डिपेंडेंसी को अपने-आप हल और डाउनलोड करना शुरू कर देगा.
https://github.com/firebase/firebase-ios-sdk.git
इसके बाद, कॉन्फ़िगरेशन के लिए यह तरीका अपनाएं:
- पक्का करें कि आपने अपने Apple ऐप्लिकेशन को Firebase के साथ रजिस्टर किया हो. इसका मतलब है कि रजिस्ट्रेशन सेक्शन में अपने ऐप्लिकेशन का बंडल आईडी डालना होगा. साथ ही, ऐप्लिकेशन स्टोर आईडी और टीम आईडी जैसी अन्य जानकारी भी डालनी होगी. यह जानकारी, साइन इन करने से पहले उपयोगकर्ता के Game Center क्रेडेंशियल की सुरक्षित तरीके से पुष्टि करने के लिए ज़रूरी होगी.
- अपने Firebase प्रोजेक्ट के लिए, साइन इन करने की सुविधा देने वाली सेवा के तौर पर Game Center को चालू करने के लिए:
- Firebase कंसोल में, पुष्टि सेक्शन खोलें.
- साइन इन करने का तरीका टैब पर, Game Center के ज़रिए साइन इन करने की सुविधा चालू करें.
अपने गेम में Game Center साइन-इन को इंटिग्रेट करना
सबसे पहले, अगर आपके गेम में पहले से Game Center का इस्तेमाल नहीं किया जा रहा है, तो Apple की डेवलपर साइट पर, अपने गेम में Game Center को शामिल करना और डिवाइस पर स्थानीय खिलाड़ी की पुष्टि करना में दिए गए निर्देशों का पालन करें.
पक्का करें कि iTunes Connect को दिया गया बंडल आईडी, उस बंडल आईडी से मेल खाता हो जिसका इस्तेमाल आपने अपने ऐप्लिकेशन को Firebase प्रोजेक्ट से कनेक्ट करते समय किया था.
Game Center इंटिग्रेशन के हिस्से के तौर पर, पुष्टि करने वाला एक हैंडलर तय किया जाता है. इसे Game Center की पुष्टि करने की प्रोसेस के कई पॉइंट पर कॉल किया जाता है. इस हैंडलर में, देखें कि प्लेयर ने Game Center में साइन इन किया है या नहीं. अगर ऐसा है, तो Firebase में साइन इन करना जारी रखा जा सकता है.
Swift
let localPlayer = GKLocalPlayer.localPlayer() localPlayer.authenticateHandler = { (gcAuthViewController?, error) in if let gcAuthViewController = gcAuthViewController { // Pause any activities that require user interaction, then present the // gcAuthViewController to the player. } else if localPlayer.isAuthenticated { // Player is signed in to Game Center. Get Firebase credentials from the // player's Game Center credentials (see below). } else { // Error } }
Objective-C
__weak GKLocalPlayer *localPlayer = [GKLocalPlayer localPlayer]; localPlayer.authenticateHandler = ^(UIViewController *gcAuthViewController, NSError *error) { if (gcAuthViewController != nil) { // Pause any activities that require user interaction, then present the // gcAuthViewController to the player. } else if (localPlayer.isAuthenticated) { // Player is signed in to Game Center. Get Firebase credentials from the // player's Game Center credentials (see below). } else { // Error } };
Firebase की मदद से पुष्टि करना
यह पता लगाने के बाद कि स्थानीय खिलाड़ी ने Game Center से साइन इन किया है,
GameCenterAuthProvider.getCredential()
की मदद से AuthCredential
ऑब्जेक्ट बनाएं और उस ऑब्जेक्ट को
signIn(with:)
को पास करके, खिलाड़ी को अपने गेम में साइन इन कराएं:
Swift
// Get Firebase credentials from the player's Game Center credentials GameCenterAuthProvider.getCredential() { (credential, error) in if let error = error { return } // The credential can be used to sign in, or re-auth, or link or unlink. Auth.auth().signIn(with:credential) { (user, error) in if let error = error { return } // Player is signed in! }
Objective-C
// Get Firebase credentials from the player's Game Center credentials [FIRGameCenterAuthProvider getCredentialWithCompletion:^(FIRAuthCredential *credential, NSError *error) { // The credential can be used to sign in, or re-auth, or link or unlink. if (error == nil) { [[FIRAuth auth] signInWithCredential:credential completion:^(FIRUser *user, NSError *error) { // If error is nil, player is signed in. }]; } }];
अगले चरण
जब कोई उपयोगकर्ता पहली बार साइन इन करता है, तो उसके लिए नया उपयोगकर्ता खाता बनाया जाता है और उसे उसके Game Center आईडी से लिंक किया जाता है. यह नया खाता, आपके Firebase प्रोजेक्ट के हिस्से के तौर पर सेव किया जाता है. इसका इस्तेमाल, आपके प्रोजेक्ट के हर ऐप्लिकेशन में उपयोगकर्ता की पहचान करने के लिए किया जा सकता है.
अपने गेम में, User
ऑब्जेक्ट से उपयोगकर्ता का Firebase UID पाया जा सकता है:
Swift
let user = Auth.auth().currentUser if let user = user { let playerName = user.displayName // The user's ID, unique to the Firebase project. // Do NOT use this value to authenticate with your backend server, // if you have one. Use getToken(with:) instead. let uid = user.uid }
Objective-C
FIRUser *user = [FIRAuth auth].currentUser; if (user) { NSString *playerName = user.displayName; // The user's ID, unique to the Firebase project. // Do NOT use this value to authenticate with your backend server, // if you have one. Use getTokenWithCompletion:completion: instead. NSString *uid = user.uid; }
Firebase रीयलटाइम डेटाबेस और Cloud Storage के सुरक्षा नियमों में, auth
वैरिएबल से साइन इन किए गए उपयोगकर्ता का यूनीक उपयोगकर्ता आईडी पाया जा सकता है. साथ ही, इसका इस्तेमाल करके यह कंट्रोल किया जा सकता है कि उपयोगकर्ता कौनसा डेटा ऐक्सेस कर सकता है.
किसी उपयोगकर्ता के Game Center प्लेयर की जानकारी पाने या Game Center की सेवाओं को ऐक्सेस करने के लिए, Game Kit से मिले एपीआई का इस्तेमाल करें.
किसी उपयोगकर्ता को Firebase से साइन आउट करने के लिए, Auth.signOut()
को कॉल करें:
Swift
let firebaseAuth = Auth.auth() do { try firebaseAuth.signOut() } catch let signOutError as NSError { print ("Error signing out: %@", signOutError) }
Objective-C
NSError *signOutError; BOOL status = [[FIRAuth auth] signOut:&signOutError]; if (!status) { NSLog(@"Error signing out: %@", signOutError); return; }