Możesz używać usług Gier Google Play do logowania graczy w grach na Androida
stworzonych w Firebase. Aby korzystać z usług Gier Google Play, gdy zalogujesz się za pomocą Firebase:
najpierw zaloguj gracza w Grach Google Play i poproś o uwierzytelnianie OAuth 2.0
w tym przypadku. Następnie przekaż kod autoryzacji aplikacji PlayGamesAuthProvider
do
wygenerować dane logowania Firebase, których możesz używać do uwierzytelniania w Firebase.
Zanim zaczniesz
Konfigurowanie projektu na Androida
Jeśli jeszcze nie masz tego za sobą, dodaj Firebase do swojego projektu na Androida.
w pliku Gradle (na poziomie aplikacji) modułu, (zwykle
<project>/<app-module>/build.gradle.kts
lub<project>/<app-module>/build.gradle
), dodaj zależność z biblioteką Firebase Authentication na Androida. Zalecamy użycie metody Firebase Android BoM aby kontrolować obsługę wersji biblioteki.Podczas konfigurowania usługi Firebase Authentication musisz też dodać do Twojej aplikacji przy użyciu pakietu SDK Usług Google Play.
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") }Korzystając z narzędzia Firebase Android BoM, Twoja aplikacja zawsze używa zgodnych wersji bibliotek Firebase na Androida.
(Wersja alternatywna) Dodaj zależności biblioteki Firebase bez użycia komponentu BoM
Jeśli nie chcesz używać biblioteki Firebase BoM, musisz określić każdą wersję biblioteki Firebase w wierszu zależności.
Pamiętaj, że jeśli używasz wielu bibliotek Firebase w swojej aplikacji, zalecamy korzystanie z BoM do zarządzania wersjami biblioteki. Dzięki temu wszystkie wersje są zgodne.
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") }
Skonfiguruj projekt Firebase
Ustaw odcisk cyfrowy SHA-1 gry na Strona Ustawienia konsoli Firebase.
Za pomocą Gradle możesz uzyskać hasz SHA Twojego certyfikatu podpisywania Polecenie
signingReport
:./gradlew signingReport
Włącz Gry Google Play jako dostawcę logowania:
Znajdź identyfikator klienta serwera WWW i tajny klucz klienta projektu. Sieć identyfikator klienta serwera identyfikuje Twój projekt Firebase w Google Play serwerów uwierzytelniania.
Aby znaleźć te wartości:
- Otwórz projekt Firebase na stronie z danymi logowania w konsoli interfejsów API Google.
- W sekcji Identyfikatory klienta OAuth 2.0 otwórz pole Klient internetowy (automatycznie utworzony przez usługę Google). Na tej stronie wyświetlana jest lista identyfikator klienta i klucz tajny serwera.
Następnie w konsoli Firebase otwórz sekcję Uwierzytelnianie.
Na karcie Metoda logowania włącz logowanie w Grach Play. dostawcy usług. Musisz podać serwer WWW swojego projektu identyfikator klienta i tajny klucz klienta uzyskane z konsoli interfejsów API.
Skonfiguruj Play Games services, używając informacji z aplikacji Firebase
W Konsola Google Play, otwórz aplikację Google Play lub utwórz aplikację.
W sekcji Rozwój kliknij Play Games services Konfiguracja Zarządzanie > Konfiguracja.
Kliknij Tak, moja gra już używa interfejsów API Google i wybierz Firebase. projekt na liście i kliknij Użyj.
Na stronie konfiguracji Play Games services kliknij Add Credential (Dodaj dane logowania).
- Wybierz typ Serwer gry.
- W polu Klient OAuth wybierz identyfikator klienta internetowego swojego projektu. Bądź upewnij się, że jest to identyfikator klienta podany podczas włączania opcji Play Games – logowanie.
- Zapisz zmiany.
Pozostając na stronie konfiguracji Play Games services, kliknij Ponownie Dodaj dane logowania.
- Wybierz typ Androida.
- W polu Klient OAuth wybierz identyfikator klienta Androida dla swojego projektu. (Jeśli nie widzisz identyfikatora klienta Androida, upewnij się, że masz ustawiony Odcisk cyfrowy SHA-1 w konsoli Firebase).
- Zapisz zmiany.
Na stronie Testerzy dodaj adresy e-mail wszystkich użytkowników, którzy że będziesz mieć możliwość zalogowania się w grze przed opublikowaniem jej Play Store
Integrowanie logowania w Grach Play z grą
Najpierw zintegruj logowanie przez Gry Play ze swoją aplikacją. Zobacz Logowanie się w Grach na Androida .
Podczas tworzenia w integracji obiektu GoogleSignInOptions
użyj
Konfiguracja DEFAULT_GAMES_SIGN_IN
i wywołanie requestServerAuthCode
:
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();
Do metody requestServerAuthCode
należy przekazać identyfikator klienta serwera WWW.
To identyfikator podany przez Ciebie przy włączaniu logowania przez Gry Play na stronie
Konsola Firebase.
Uwierzytelnij za pomocą Firebase
Po dodaniu do aplikacji logowania przez Gry Play musisz skonfigurować Firebase, aby korzystać z tej usługi dane logowania do konta Google, które otrzymujesz, gdy gracz się zaloguje; w Grach Play.
- Najpierw w metodzie
onCreate
aktywności związanej z logowaniem pobierz współdzielone wystąpienie obiektuFirebaseAuth
:
Kotlin+KTX
private lateinit var auth: FirebaseAuth // ... // Initialize Firebase Auth auth = Firebase.auth
Java
private FirebaseAuth mAuth; // ... // Initialize Firebase Auth mAuth = FirebaseAuth.getInstance();
- Zanim rozpoczniesz aktywność, sprawdź, czy gracz nie jest już zalogowany z Firebase:
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.
- Gdy gracz zaloguje się w Grach Play cicho lub interaktywnie:
pobierz kod autoryzacji z obiektu
GoogleSignInAccount
, wymień go dane logowania do Firebase i uwierzytelnienie w Firebase za pomocą tej platformy. dane logowania:
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); } // ... } }); }
Jeśli wywołanie funkcji signInWithCredential
się powiedzie, możesz użyć metody getCurrentUser
, aby pobrać dane konta użytkownika.
Dalsze kroki
Gdy użytkownik zaloguje się po raz pierwszy, tworzone jest nowe konto użytkownika. powiązane z identyfikatorem Gier Play. To nowe konto jest przechowywane w ramach projektu Firebase i możesz go użyć do identyfikacji użytkownika w każdej aplikacji w projektach AI.
W swojej grze możesz uzyskać identyfikator Firebase UID użytkownika w FirebaseUser
obiekt:
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();
W Bazie danych czasu rzeczywistego Firebase i Regułach zabezpieczeń Cloud Storage możesz uzyskać
unikalny identyfikator zalogowanego użytkownika ze zmiennej auth
i użyj go do
kontrolować dostęp użytkownika do danych.
Aby uzyskać informacje o użytkowniku w Grach Play lub uzyskać dostęp do usług Gier Play: korzysta z interfejsów API udostępnionych przez pakiet SDK do gier Google Play.
Aby wylogować użytkownika, zadzwoń pod numer FirebaseAuth.signOut()
:
Kotlin+KTX
Firebase.auth.signOut()
Java
FirebaseAuth.getInstance().signOut();