गेम सेंटर का इस्तेमाल करके पुष्टि करें

Firebase पर बने Apple प्लैटफ़ॉर्म गेम में खिलाड़ियों को साइन इन करने के लिए, Game Center का इस्तेमाल किया जा सकता है. यहां की यात्रा पर हूं Firebase के साथ गेम सेंटर साइन-इन का इस्तेमाल करें, पहले पक्का करें कि लोकल प्लेयर गेम सेंटर से साइन इन करें. इसके बाद, GameCenterAuthProvider ऑब्जेक्ट का इस्तेमाल करके Firebase क्रेडेंशियल जनरेट करें. इसका इस्तेमाल करके, Firebase की पुष्टि की जा सकती है.

शुरू करने से पहले

Firebase डिपेंडेंसी इंस्टॉल और मैनेज करने के लिए, Swift पैकेज मैनेजर का इस्तेमाल करें.

  1. Xcode में, अपना ऐप्लिकेशन प्रोजेक्ट खोलने के लिए, फ़ाइल > पैकेज जोड़ना.
  2. जब कहा जाए, तब Firebase Apple प्लैटफ़ॉर्म SDK टूल का रिपॉज़िटरी जोड़ें:
  3.   https://github.com/firebase/firebase-ios-sdk.git
    अभी तक किसी भी व्यक्ति ने चेक इन नहीं किया है
  4. Firebase से पुष्टि करने की लाइब्रेरी चुनें.
  5. अपने टारगेट की बिल्ड सेटिंग के अन्य लिंकर फ़्लैग सेक्शन में -ObjC फ़्लैग जोड़ें.
  6. यह काम पूरा होने पर, Xcode अपने-आप रिज़ॉल्व और डाउनलोड होना शुरू कर देगा पर निर्भर करता है.

इसके बाद, कॉन्फ़िगरेशन के कुछ चरण पूरे करें:

  1. पक्का करें कि आपने Apple ऐप्लिकेशन को Firebase के साथ रजिस्टर किया हो. इसका मतलब है कि अपने रजिस्ट्रेशन सेक्शन में ऐप्लिकेशन का बंडल आईडी. साथ ही, इसमें अतिरिक्त विकल्प भी शामिल होना चाहिए ऐप स्टोर आईडी और टीम आईडी वगैरह जैसी जानकारी शामिल करनी होगी. यह जानकारी सिर्फ़ उपयोगकर्ता के गेम सेंटर क्रेडेंशियल की ऑडियंस की सुरक्षित तरीके से पुष्टि करने से पहले साइन-इन की प्रक्रिया पूरी करें.
  2. अपने Firebase प्रोजेक्ट के लिए, साइन इन करने की सेवा देने वाली कंपनी के तौर पर गेम सेंटर को चालू करें:
    1. Firebase कंसोल में, पुष्टि करने की सुविधा वाला सेक्शन खोलें.
    2. साइन इन करने का तरीका टैब पर, गेम सेंटर को चालू करें साइन-इन करने की सेवा देने वाली कंपनी.

अपने गेम में गेम सेंटर साइन-इन को इंटिग्रेट करें

सबसे पहले, अगर आपके गेम में पहले से Game Center का इस्तेमाल नहीं किया जा रहा हो, तो यहां दिए गए निर्देशों का पालन करें अपने गेम में गेम सेंटर को शामिल करना और Apple पर, डिवाइस पर लोकल प्लेयर की पुष्टि करना डेवलपर साइट पर.

पक्का करें कि आपने iTunes Connect को जो बंडल आईडी दिया है वह बंडल आईडी से मेल खाता है का इस्तेमाल तब किया जाता है, जब आपने ऐप्लिकेशन को Firebase प्रोजेक्ट से कनेक्ट किया हो.

अपने गेम सेंटर के इंटिग्रेशन में, आप पुष्टि करने वाला हैंडलर तय करते हैं जिसे 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 की मदद से पुष्टि करें

यह तय करने के बाद कि स्थानीय खिलाड़ी ने गेम सेंटर से साइन इन किया है, इनसे AuthCredential ऑब्जेक्ट बनाकर, खिलाड़ी को अपने गेम में साइन इन करने दें GameCenterAuthProvider.getCredential() और उस ऑब्जेक्ट को पास कर रहा है 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.
    }];
  }
}];

अगले चरण

किसी उपयोगकर्ता के पहली बार साइन इन करने के बाद, एक नया उपयोगकर्ता खाता बना दिया जाता है और लिंक किया गया है. यह नया खाता आपके Firebase प्रोजेक्ट बनाया जा सकता है. इसकी मदद से, आपके ऐप्लिकेशन में मौजूद हर ऐप्लिकेशन पर उपयोगकर्ता की पहचान की जा सकती है प्रोजेक्ट.

अपने गेम में, User ऑब्जेक्ट से उपयोगकर्ता का Firebase यूआईडी पाया जा सकता है:

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 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;
}