Catch up on everything announced at Firebase Summit, and learn how Firebase can help you accelerate app development and run your app with confidence. Learn More

Game Center'ı Kullanarak Kimlik Doğrulama

Koleksiyonlar ile düzeninizi koruyun İçeriği tercihlerinize göre kaydedin ve kategorilere ayırın.

Oyuncuları Firebase üzerine kurulu bir Apple platformları oyununda oturum açmak için Game Center'ı kullanabilirsiniz. Firebase ile Game Center oturum açmayı kullanmak için önce yerel oyuncunun Game Center ile oturum açtığından emin olun ve ardından Firebase ile kimlik doğrulaması yapmak için kullanabileceğiniz bir Firebase kimlik bilgisi oluşturmak için GameCenterAuthProvider nesnesini kullanın.

Sen başlamadan önce

Firebase bağımlılıklarını kurmak ve yönetmek için Swift Paket Yöneticisi'ni kullanın.

  1. Xcode'da, uygulama projeniz açıkken File > Add Packages seçeneğine gidin.
  2. İstendiğinde, Firebase Apple platformları SDK deposunu ekleyin:
  3.   https://github.com/firebase/firebase-ios-sdk
  4. Firebase Kimlik Doğrulama kitaplığını seçin.
  5. Bittiğinde, Xcode otomatik olarak bağımlılıklarınızı arka planda çözmeye ve indirmeye başlayacaktır.

Ardından, bazı yapılandırma adımlarını gerçekleştirin:

  1. Apple uygulamanızı Firebase'e kaydettirdiğinizden emin olun. Bu, kayıt bölümüne uygulamanızın paket kimliğinin yanı sıra App Store Kimliği ve Ekip Kimliği vb. gibi isteğe bağlı ek bilgiler girilmesi anlamına gelir. Bu, oturum açmayı tamamlamadan önce kullanıcının Game Center kimlik bilgilerinin hedef kitlesini güvenli bir şekilde doğrulamak için gerekli olacaktır.
  2. Firebase projeniz için oturum açma sağlayıcısı olarak Game Center'ı etkinleştirin:
    1. Firebase konsolunda , Kimlik Doğrulama bölümünü açın.
    2. Oturum açma yöntemi sekmesinde Game Center oturum açma sağlayıcısını etkinleştirin.

Game Center oturum açma özelliğini oyununuza entegre edin

İlk olarak, oyununuz Game Center'ı kullanmıyorsa, Apple geliştirici sitesinde Game Center'ı Oyununuza Dahil Etme ve Aygıtta Yerel Bir Oyuncunun Kimliğini Doğrulama bölümündeki talimatları izleyin.

iTunes Connect'e sağladığınız paket kimliğinin, uygulamanızı Firebase projenize bağladığınızda kullandığınız paket kimliğiyle eşleştiğinden emin olun.

Game Center entegrasyonunuzun bir parçası olarak, Game Center kimlik doğrulama sürecinde birden çok noktada çağrılan bir kimlik doğrulama işleyicisi tanımlarsınız. Bu işleyicide, oyuncunun Game Center ile oturum açıp açmadığını kontrol edin. Öyleyse, Firebase'de oturum açmaya devam edebilirsiniz.

Süratli

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

Amaç-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 ile kimlik doğrulaması yapın

Yerel oyuncunun Game Center ile oturum açtığını belirledikten sonra, GameCenterAuthProvider.getCredential() ile bir AuthCredential nesnesi oluşturarak ve bu nesneyi signIn(with:) ileterek oyuncuyu oyununuzda oturum açın:

Süratli

// 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!
  }

Amaç-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.
    }];
  }
}];

Sonraki adımlar

Bir kullanıcı ilk kez oturum açtıktan sonra yeni bir kullanıcı hesabı oluşturulur ve Game Center ID'sine bağlanır. Bu yeni hesap, Firebase projenizin bir parçası olarak depolanır ve projenizdeki her uygulamada bir kullanıcıyı tanımlamak için kullanılabilir.

Oyununuzda, User nesnesinden kullanıcının Firebase UID'sini alabilirsiniz:

Süratli

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
}

Amaç-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 Gerçek Zamanlı Veritabanınız ve Bulut Depolama Güvenlik Kurallarınızda, oturum açmış kullanıcının benzersiz kullanıcı kimliğini auth değişkeninden alabilir ve bunu bir kullanıcının hangi verilere erişebileceğini kontrol etmek için kullanabilirsiniz.

Bir kullanıcının Game Center oyuncu bilgilerini almak veya Game Center hizmetlerine erişmek için Game Kit tarafından sağlanan API'leri kullanın.

Bir kullanıcının Firebase oturumunu kapatmak için Auth.signOut() arayın:

Süratli

let firebaseAuth = Auth.auth()
do {
  try firebaseAuth.signOut()
} catch let signOutError as NSError {
  print ("Error signing out: %@", signOutError)
}

Amaç-C

NSError *signOutError;
BOOL status = [[FIRAuth auth] signOut:&signOutError];
if (!status) {
  NSLog(@"Error signing out: %@", signOutError);
  return;
}