Bir Android oyununda oyuncuların oturum açmasını sağlamak için Google Play Games hizmetlerini kullanabilirsiniz
geliştirmenizi sağlar. Google Play Games Hizmetleri'nde Firebase ile oturum açma özelliğini kullanmak için
önce oynatıcının Google Play Games'de oturum açmasını sağlayın ve bir OAuth 2.0 kimlik doğrulaması isteyin
ekleyebilirsiniz. Ardından, yetkilendirme kodunu PlayGamesAuthProvider
numaralı telefona iletin.
Firebase ile kimlik doğrulamak için kullanabileceğiniz bir Firebase kimlik bilgisi oluşturun.
Başlamadan önce
Android projenizi oluşturun
Henüz yapmadıysanız Firebase'i Android projenize ekleyin.
Modül (uygulama düzeyinde) Gradle dosyanızda (genellikle
<project>/<app-module>/build.gradle.kts
veya<project>/<app-module>/build.gradle
), Android için Firebase Authentication kitaplığına bağımlılığı ekleyin. Şunu kullanmanızı öneririz: Firebase Android BoM Kitaplık'ta sürüm oluşturmayı kontrol etmek içinAyrıca, Firebase Authentication kurulumunun bir parçası olarak Google Play Hizmetleri SDK'sını uygulamanıza ekleyin.
dependencies { // Import the BoM for the Firebase platform implementation(platform("com.google.firebase:firebase-bom:33.2.0")) // Add the dependency for the Firebase Authentication library // When using the BoM, you don't specify versions in Firebase library dependencies implementation("com.google.firebase:firebase-auth")
// Also add the dependency for the Google Play services library and specify its version implementation("com.google.android.gms:play-services-auth:21.2.0") }Firebase Android BoM kullanıldığında, Uygulamanız her zaman Firebase Android kitaplıklarının uyumlu sürümlerini kullanacaktır.
(Alternatif) Firebase kitaplığı bağımlılıklarını kullanmadan BoM
Firebase BoM kullanmamayı seçerseniz her Firebase kitaplığı sürümünü belirtmeniz gerekir değerini alır.
Uygulamanızda birden çok Firebase kitaplığı kullanıyorsanız, kitaplık sürümlerini yönetmek için BoM kullanmanızı öneririz. Bu, tüm sürümlerin uyumlu olduğundan emin olun.
dependencies { // Add the dependency for the Firebase Authentication library // When NOT using the BoM, you must specify versions in Firebase library dependencies implementation("com.google.firebase:firebase-auth:23.0.0")
.
// Also add the dependency for the Google Play services library and specify its version implementation("com.google.android.gms:play-services-auth:21.2.0") }
Firebase projenizi oluşturun
Oyununuzun SHA-1 parmak izini Ayarlar sayfası Firebase konsolunda görebilirsiniz.
Gradle ile imza sertifikanızın SHA karmasını alabilirsiniz
signingReport
komutu:./gradlew signingReport
Google Play Games'i oturum açma sağlayıcısı olarak etkinleştirme:
Projenizin web sunucusu istemci kimliğini ve istemci gizli anahtarını bulun. Web sunucu istemci kimliği, Firebase projenizi Google Play'e tanımlar kimlik doğrulama sunucuları için geçerlidir.
Bu değerleri bulmak için:
- Google API'leri konsolu kimlik bilgileri sayfasında Firebase projenizi açın.
- OAuth 2.0 istemci kimlikleri bölümünde Web istemcisi (otomatik Google Hizmeti tarafından oluşturulan) ayrıntılar sayfasına gidin. Bu sayfada, web sunucu istemci kimliği ve gizli anahtarı.
Ardından Firebase konsolunda Kimlik Doğrulama bölümünü açın.
Oturum açma yöntemi sekmesinde Play Games'de oturum açmayı etkinleştirin sağlar. Projenizin web sunucusunu belirtmeniz gerekir Client-ID ve istemci sırrı bilgilerini girin.
Play Games services uygulamasını Firebase uygulama bilgilerinizle yapılandırın
Google Play Konsolu, Google Play uygulamanızı açın veya bir uygulama oluşturun.
Büyüme bölümünde, Play Games services > Kurulum ve Yönetim > Yapılandırma'yı tıklayın.
Evet, oyunumda zaten Google API'leri kullanılıyor'u tıklayın, Firebase'inizi seçin projeyi seçin ve Kullan'ı tıklayın.
Play Games services yapılandırma sayfasında şunu tıklayın: Kimlik Bilgisi Ekle.
- Oyun sunucusu türünü seçin.
- OAuth istemcisi alanında projenizin web istemcisi kimliğini seçin. Bunun, etkinleştirdiğiniz istemci kimliği ile aynı olduğundan emin olun. Play Games oturum açma.
- Yaptığınız değişiklikleri kaydedin.
Play Games services yapılandırma sayfasındayken Tekrar Kimlik Bilgisi Ekleyin.
- Android türünü seçin.
- OAuth istemcisi alanında projenizin Android istemci kimliğini seçin. (Android istemci kimliğinizi görmüyorsanız oyununuzun Firebase konsolunda SHA-1 parmak izi.)
- Yaptığınız değişiklikleri kaydedin.
Test kullanıcıları sayfasında, teste tabi tutulması gereken tüm kullanıcıların e-posta adreslerini Google Play Geliştirici Konsolu'nda yayınlamadan önce oyununuzda oturum Play Store.
Play Games oturum açma özelliğini oyununuza entegre etme
İlk olarak, Play Games oturum açma özelliğini uygulamanıza entegre edin. Görüntüleyin Android Games'de oturum açma makalesini okuyabilirsiniz.
Entegrasyonunuzda, GoogleSignInOptions
nesnesini derlerken şunu kullanın:
DEFAULT_GAMES_SIGN_IN
yapılandırmasını ve requestServerAuthCode
yöntemini çağırın:
Kotlin+KTX
val gso = GoogleSignInOptions.Builder(GoogleSignInOptions.DEFAULT_GAMES_SIGN_IN) .requestServerAuthCode(getString(R.string.default_web_client_id)) .build()
Java
GoogleSignInOptions gso = new GoogleSignInOptions.Builder(GoogleSignInOptions.DEFAULT_GAMES_SIGN_IN) .requestServerAuthCode(getString(R.string.default_web_client_id)) .build();
Web sunucusu istemci kimliğinizi requestServerAuthCode
yöntemine iletmeniz gerekir.
Bu,
Firebase konsolu.
Firebase ile kimlik doğrulama
Uygulamanıza Play Games oturum açma özelliğini ekledikten sonra, Bir oyuncu başarıyla oturum açtığında elde ettiğiniz Google hesabı kimlik bilgileri oynayabilirsiniz.
- İlk olarak, oturum açma etkinliğinizin
onCreate
yönteminde,FirebaseAuth
nesnesinin paylaşılan örneği:
Kotlin+KTX
private lateinit var auth: FirebaseAuth // ... // Initialize Firebase Auth auth = Firebase.auth
Java
private FirebaseAuth mAuth; // ... // Initialize Firebase Auth mAuth = FirebaseAuth.getInstance();
- Etkinliğinizi başlatırken oynatıcının daha önce oturum açmış olup olmadığını kontrol edin Firebase için:
Kotlin+KTX
override fun onStart() { super.onStart() // Check if user is signed in (non-null) and update UI accordingly. val currentUser = auth.currentUser updateUI(currentUser) }
Java
@Override public void onStart() { super.onStart(); // Check if user is signed in (non-null) and update UI accordingly. FirebaseUser currentUser = mAuth.getCurrentUser(); updateUI(currentUser); }
If the player isn't signed in, present the player with your game's
signed-out experience, including the option to sign in.
- Bir oyuncu sessiz veya etkileşimli bir şekilde Play Games'de oturum açtıktan sonra
GoogleSignInAccount
nesnesinden yetkilendirme kodunu al ve Firebase kimlik bilgisi ve Firebase kullanarak Firebase ile kimlik doğrulama kimlik bilgisi:
Kotlin+KTX
// Call this both in the silent sign-in task's OnCompleteListener and in the // Activity's onActivityResult handler. private fun firebaseAuthWithPlayGames(acct: GoogleSignInAccount) { Log.d(TAG, "firebaseAuthWithPlayGames:" + acct.id!!) val auth = Firebase.auth val credential = PlayGamesAuthProvider.getCredential(acct.serverAuthCode!!) auth.signInWithCredential(credential) .addOnCompleteListener(this) { task -> if (task.isSuccessful) { // Sign in success, update UI with the signed-in user's information Log.d(TAG, "signInWithCredential:success") val user = auth.currentUser updateUI(user) } else { // If sign in fails, display a message to the user. Log.w(TAG, "signInWithCredential:failure", task.exception) Toast.makeText( baseContext, "Authentication failed.", Toast.LENGTH_SHORT, ).show() updateUI(null) } // ... } }
Java
// Call this both in the silent sign-in task's OnCompleteListener and in the // Activity's onActivityResult handler. private void firebaseAuthWithPlayGames(GoogleSignInAccount acct) { Log.d(TAG, "firebaseAuthWithPlayGames:" + acct.getId()); final FirebaseAuth auth = FirebaseAuth.getInstance(); AuthCredential credential = PlayGamesAuthProvider.getCredential(acct.getServerAuthCode()); auth.signInWithCredential(credential) .addOnCompleteListener(this, new OnCompleteListener<AuthResult>() { @Override public void onComplete(@NonNull Task<AuthResult> task) { if (task.isSuccessful()) { // Sign in success, update UI with the signed-in user's information Log.d(TAG, "signInWithCredential:success"); FirebaseUser user = auth.getCurrentUser(); updateUI(user); } else { // If sign in fails, display a message to the user. Log.w(TAG, "signInWithCredential:failure", task.getException()); Toast.makeText(MainActivity.this, "Authentication failed.", Toast.LENGTH_SHORT).show(); updateUI(null); } // ... } }); }
signInWithCredential
çağrısı başarılı olursa kullanıcının hesap verilerini almak için getCurrentUser
yöntemini kullanabilirsiniz.
Sonraki adımlar
Kullanıcı ilk kez oturum açtığında yeni bir kullanıcı hesabı oluşturulur ve kendi Play Games kimliklerine bağladıkları hesaptır. 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, kullanıcının Firebase UID'sini FirebaseUser
bölümünden alabilirsiniz.
nesne:
Kotlin+KTX
val user = auth.currentUser user?.let { val playerName = it.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 FirebaseUser.getIdToken() instead. val uid = it.uid }
Java
FirebaseUser user = mAuth.getCurrentUser(); String playerName = user.getDisplayName(); // 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 FirebaseUser.getIdToken() instead. String uid = user.getUid();
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 Play Games oyuncu bilgilerini almak veya Play Games hizmetlerine erişmek için: Google Play Games SDK'sı tarafından sağlanan API'leri kullanmalıdır.
Bir kullanıcının oturumunu kapatmak için FirebaseAuth.signOut()
numaralı telefonu arayın:
Kotlin+KTX
Firebase.auth.signOut()
Java
FirebaseAuth.getInstance().signOut();