Google ile Oturum Açma özelliğini uygulamanıza entegre ederek kullanıcılarınızın Google Hesaplarını kullanarak Firebase'de kimlik doğrulaması yapmasına izin verebilirsiniz.
Başlamadan önce
Unity projenizi oluşturma
Firebase Authentication kullanmaya başlamak için şunları yapmanız gerekir:
Unity projenizi kaydedin ve Firebase'i kullanacak şekilde yapılandırın.
Unity projeniz Firebase'i kullanıyorsa Firebase için zaten kayıtlı ve yapılandırılmış demektir.
Unity projeniz yoksa örnek uygulama indirebilirsiniz.
Firebase Unity SDK'sını (özellikle
FirebaseAuth.unitypackage) Unity projenize ekleyin.
Firebase'i Unity projenize eklemek için hem Firebase konsolunda hem de açık Unity projenizde görevler gerçekleştirmeniz gerekir (örneğin, Firebase yapılandırma dosyalarını konsoldan indirip Unity projenize taşımanız gerekir).
Firebase projenizi ve kimlik bilgilerinizi ayarlama
Android: Firebase konsolunda uygulamanızın SHA-1 parmak izini belirtin:
- Firebase konsolunda
Ayarlar > Genel sekmesine gidin. Uygulamalarınız kartına gidin, Android uygulamanızı seçin ve SHA sertifikası parmak izleri alanına SHA-1 parmak izinizi ekleyin.
Anahtar deponuzun SHA-1 parmak izini
keytoolkullanarak alabilirsiniz:keytool -keystore path-to-keystore.keystore -list -vUygulamanızın SHA parmak izini alma hakkında daha fazla bilgi için İstemcinizin Kimliğini Doğrulama başlıklı makaleyi inceleyin.
- Firebase konsolunda
Google ile Oturum Açma'yı etkinleştirme ve web istemci kimliğinizi kopyalama:
- Firebase konsolunda Güvenlik > Kimlik doğrulama'ya gidin.
- Sign-in method (Oturum açma yöntemi) sekmesinde Google oturum açma sağlayıcısını etkinleştirin.
- Web SDK yapılandırması bölümünü genişletin ve Web istemci kimliğinizi (ör.
123456-abc.apps.googleusercontent.com) kopyalayın. Bu, kimlik jetonlarınızın kitle (aud) talebini temsil eder ve hem Android hem de iOS için gereklidir. - Kaydet'i tıklayın.
Firebase yapılandırma dosyalarınızı güncelleyin ve iOS ters istemci kimliğinizi kopyalayın:
- Firebase konsolundan en yeni Firebase yapılandırma dosyalarını indirin (Android için
ve iOS içingoogle-services.json ) ve Unity projenizdeki eski kopyaları değiştirin. (Firebase'i Unity projenize ekleme başlıklı makaleyi inceleyin.)GoogleService-Info.plist - iOS:
dosyanızı açın veGoogleService-Info.plist REVERSED_CLIENT_IDanahtarının değerini (ör.com.googleusercontent.apps.12345-abc) kopyalayın. Bu değer, iOS yönlendirme URL şemasını yapılandırmak için gereklidir.
- Firebase konsolundan en yeni Firebase yapılandırma dosyalarını indirin (Android için
Google ile Oturum Açma eklentisini Unity projenize entegre etme
Eklentiyi içe aktarma:
- Mevcut bir projeye entegrasyon yapıyorsanız devam etmeden önce projenizi yedekleyin ve eski Google ile Oturum Açma eklentilerini kaldırın.
GoogleSignInNative.unitypackagedosyasını GitHub'dan indirin ve Unity projenize aktarın (Assets > Import Package > Custom Package). Tüm dosyaların seçildiğinden emin olun ve İçe aktar'ı tıklayın.
Eklenti ayarlarını yapılandırma:
- Unity Editor'da Window > Google Sign-In Native > Settings'e (Pencere > Google Oturum Açma Yerel > Ayarlar) gidin.
- Web istemci kimliğinizi ilk alana yapıştırın.
- iOS Ters İstemci Kimliğinizi ikinci alana yapıştırın.
- Save Settings (Ayarları Kaydet) seçeneğini tıklayın.
Yerel bağımlılıkları çözme:
- Assets > External Dependency Manager > Android Resolver > Force Resolve'a gidin.
- İşlemin başarılı olduğunu belirten mesajın gösterilmesini bekleyin. Bu işlem, yerel
googleidveandroidxKimlik Bilgisi Yöneticisi kitaplıklarını indirir.
Firebase.Auth.FirebaseAuth sınıfına erişme
FirebaseAuth sınıfı, tüm API çağrılarının ağ geçididir.
FirebaseAuth.DefaultInstance üzerinden erişilebilir.
Firebase.Auth.FirebaseAuth auth = Firebase.Auth.FirebaseAuth.DefaultInstance;
Firebase ile kimlik doğrulama
Sahnenizde
GoogleSignInManagerayarlama:GoogleSignInManageradlı ilk sahnenizde boş birGameObjectoluşturun.GoogleSignInManager.cskomut dosyasını buna ekleyin.GoogleSignInNativeSettingsöğesini (Assets/GoogleSignInNative/Resourcesiçinde bulunur) komut dosyasındaki Sign In Settings alanına sürükleyin.
Google ile Oturum Açma'yı tetikleyin ve kimlik jetonunu Firebase kimlik bilgisiyle değiştirin:
GoogleSignInManager.OnSignInCompletedveGoogleSignInManager.OnSignInFailedöğelerine abone olan,GoogleSignInManager.Instance.StartSignIn()ile oturum açmayı tetikleyen ve elde edilen Google kimlik jetonunuGoogleAuthProvider.GetCredentialkullanarak Firebase kimlik bilgisiyle değiştiren bir denetleyici komut dosyası oluşturun:using Firebase.Auth; using Firebase.Extensions; using UnityEngine; public class MyAuthController : MonoBehaviour { private FirebaseAuth auth; private void Awake() { auth = FirebaseAuth.DefaultInstance; } private void OnEnable() { GoogleSignInManager.OnSignInCompleted += HandleSignInSuccess; GoogleSignInManager.OnSignInFailed += HandleSignInFailure; } private void OnDisable() { GoogleSignInManager.OnSignInCompleted -= HandleSignInSuccess; GoogleSignInManager.OnSignInFailed -= HandleSignInFailure; } public void OnSignInButtonClick() { GoogleSignInManager.Instance.StartSignIn(); } private void HandleSignInSuccess(string idToken) { Debug.Log("[Auth] Google Sign-In succeeded. Authenticating with Firebase..."); Credential credential = GoogleAuthProvider.GetCredential(idToken, null); auth.SignInAndRetrieveDataWithCredentialAsync(credential).ContinueWithOnMainThread(task => { if (task.IsCanceled) { Debug.LogError("SignInAndRetrieveDataWithCredentialAsync was canceled."); return; } if (task.IsFaulted) { Debug.LogError("SignInAndRetrieveDataWithCredentialAsync encountered an error: " + task.Exception); return; } AuthResult result = task.Result; Debug.LogFormat("User signed in successfully: {0} ({1})", result.User.DisplayName, result.User.UserId); }); } private void HandleSignInFailure(string error) { Debug.LogError($"[Auth] Google Sign-In failed: {error}"); } }
Uygulamanızı geliştirin
Android
- Oyuncu Ayarları'ndaki Paket Adı'nın Firebase ve Google Cloud OAuth kimlik bilgilerinizle tam olarak eşleştiğinden emin olun.
- Minimum API düzeyinizin 34 veya daha yüksek bir değere ayarlandığından emin olun.
- Build and Run'ı (Derle ve Çalıştır) tıklayın.
iOS
- Xcode projesi oluşturmak için projenizi Unity'de derleyin, ardından oluşturulan
.xcworkspacedosyasını açın. - Xcode'da Signing & Capabilities (İmzalama ve Özellikler) sekmesine gidin ve Development Team'inizi (Geliştirme Ekibi) seçin.
- Eklenti, özel URL şemasını (
REVERSED_CLIENT_ID) Xcode projenize otomatik olarak ekler. Fiziksel bir cihazda derleme ve çalıştırma
Sonraki adımlar
Kullanıcı ilk kez oturum açtıktan sonra yeni bir kullanıcı hesabı oluşturulur ve kullanıcının oturum açarken kullandığı kimlik bilgilerine (kullanıcı adı ve şifre, telefon numarası veya kimlik doğrulama sağlayıcı bilgileri) bağlanır. Bu yeni hesap, Firebase projenizin bir parçası olarak depolanır ve kullanıcının nasıl oturum açtığından bağımsız olarak projenizdeki her uygulamada kullanıcıyı tanımlamak için kullanılabilir.
-
Uygulamalarınızda, kullanıcının temel profil bilgilerini
Firebase.Auth.FirebaseUsernesnesinden alabilirsiniz:Firebase.Auth.FirebaseUser user = auth.CurrentUser; if (user != null) { string name = user.DisplayName; string email = user.Email; System.Uri photo_url = user.PhotoUrl; // 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 User.TokenAsync() instead. string uid = user.UserId; }
Firebase Realtime Database ve Cloud Storage Güvenlik Kurallarınızda, oturum açmış kullanıcının benzersiz kullanıcı kimliğini
authdeğişkeninden alabilir ve kullanıcının hangi verilere erişebileceğini kontrol etmek için kullanabilirsiniz.
Kimlik doğrulama sağlayıcı kimlik bilgilerini mevcut bir kullanıcı hesabına bağlayarak kullanıcıların birden fazla kimlik doğrulama sağlayıcı kullanarak uygulamanızda oturum açmasına izin verebilirsiniz.
Bir kullanıcının oturumunu kapatmak için
SignOut() yöntemini çağırın:
auth.SignOut();