Firebase'de geliştirilmiş bir Apple platform oyununda oyuncuların oturumlarını açmak için Game Center'ı kullanabilirsiniz. Alıcı:
Firebase ile Game Center ile Oturum Açma özelliğini kullanın, önce yerel oynatıcının
Oyun Merkezi'nde oturum açıp GameCenterAuthProvider
nesnesini kullanarak
Firebase ile kimlik doğrulamak için kullanabileceğiniz bir Firebase kimlik bilgisi oluşturun.
Başlamadan önce
Firebase bağımlılıklarını yükleyip yönetmek için Swift Package Manager'ı kullanın.
- Xcode'da, uygulamanız açıkken Dosya > Paket Ekle'yi tıklayın.
- İstendiğinde Firebase Apple platformlar SDK deposunu ekleyin:
- Firebase Authentication kitaplığını seçin.
-ObjC
işaretini, hedefinizin derleme ayarlarındaki Diğer Bağlayıcı İşaretleri bölümüne ekleyin.- İşlemi tamamladığınızda, Xcode otomatik olarak arka planda tutmalarını sağlayabilirsiniz.
https://github.com/firebase/firebase-ios-sdk.git.
Sonra, bazı yapılandırma adımlarını uygulayın:
- Apple uygulamanızı Firebase'e kaydettiğinizden emin olun. Bu, şirketinizin uygulamanın paket kimliği ile birlikte isteğe bağlı ek App Store Kimliği ve Ekip Kimliği gibi bilgiler sağlar. Bu, öncesinde kullanıcının Game Center kimlik bilgilerinin kitlesini güvenli bir şekilde doğrulama. oturum açma işlemini tamamlayın.
- Game Center'ı Firebase projeniz için oturum açma sağlayıcısı olarak etkinleştirin:
- Firebase konsolunda Kimlik Doğrulama bölümünü açın.
- Oturum açma yöntemi sekmesinde Oyun Merkezi'ni etkinleştirin oturum açma sağlayıcı.
Game Center oturum açma özelliğini oyununuza entegre edin
Öncelikle, oyununuzda Oyun Merkezi henüz kullanılmıyorsa Oyun Merkezi'ni Oyununuza Dahil Etme Apple'da Cihazdaki Yerel Bir Oyuncunun Kimliğini Doğrulama geliştirici sitesi.
iTunes Connect'e sağladığınız paket kimliğinin, gönderdiğiniz paket kimliğiyle eşleştiğinden emin olun Bu özellik, uygulamanızı Firebase projenize bağladığınızda kullanılır.
Game Center entegrasyonunuz kapsamında bir kimlik doğrulama işleyici tanımlarsınız. birden fazla noktada çağrılır. İçinde oyuncunun Game Center'da oturum açıp açmadığını kontrol edin. Öyleyse Firebase'de oturum açmaya devam edin.
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 ile kimlik doğrulama
Yerel oyuncunun Game Center'da oturum açtığını belirledikten sonra
şununla bir AuthCredential
nesnesi oluşturarak oyuncunun oyununuzda oturum açmasını sağlayın:
GameCenterAuthProvider.getCredential()
ve bu nesneyi
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. }]; } }];
Sonraki adımlar
Kullanıcı ilk kez oturum açtığında yeni bir kullanıcı hesabı oluşturulur ve kendi Oyun Merkezi Kimliğine bağlı olabilir. Bu yeni hesap, şu bilgilerin bir parçası olarak saklanır: ve Firebase'deki tüm uygulamalarda bir kullanıcıyı tanımlamak için kullanılabilir. belirler.
Oyununuzda, User
nesnesinden kullanıcının Firebase UID'sini alabilirsiniz:
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 Realtime Database ve Cloud Storage Güvenlik Kurallarınızda şunları alabilirsiniz:
oturum açmış kullanıcının auth
değişkenindeki benzersiz kullanıcı kimliğini kullanarak
Kullanıcının hangi verilere erişebileceğini kontrol etmek
Kullanıcının Game Center oyuncu bilgilerini edinmek veya Game Center'a 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()
numaralı telefonu arayın:
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; }