Możesz używać usług Gier Google Play do logowania graczy w grach na Androida
oparte na Firebase i Unity. Aby korzystać z usług Gier Google Play, zaloguj się za pomocą
Firebase, najpierw zaloguj się w odtwarzaczu w Grach Google Play i poproś o
użyj kodu uwierzytelniającego OAuth 2.0. Następnie przekaż kod autoryzacji do
PlayGamesAuthProvider
, aby wygenerować dane logowania Firebase, których możesz użyć do:
uwierzytelniać się w Firebase.
Zanim zaczniesz
Konfigurowanie projektu w Unity
Dodaj plik konfiguracyjny Firebase i pakiet SDK Unity (Firebase) do projektu Unity zgodnie z opisem w Dodaj Firebase do projektu w Unity Postępuj zgodnie z instrukcjami dotyczącymi Androida.
Pamiętaj, aby zaimportować:
FirebaseAuth.unitypackage
.W edytorze Unity w sekcji Build Settings > (Ustawienia kompilacji >) Ustawienia odtwarzacza > Inny powód Ustawienia określają nazwę pakietu gry na Androida.
Następnie w sekcji Ustawienia kompilacji > Ustawienia odtwarzacza > Ustawienia publikowania, wybierz lub utwórz magazyn kluczy i klucz, które zostaną użyte do podpisania Androida pakietu SDK. Aby logowanie w Grach Play było możliwe, plik APK musi być podpisany. ma zastosowanie nie tylko w przypadku publikacji, ale także Twojej gry.
Skonfiguruj projekt Firebase
W konsoli Firebase otwórz projekt Firebase. w którym zarejestrowano projekt w Unity.
Ustaw odcisk cyfrowy SHA-1 gry na Strona Ustawienia konsoli Firebase przy użyciu klucza ustawionego w Unity.
Odcisk cyfrowy SHA-1 klucza możesz uzyskać za pomocą polecenia
keytool
:keytool -exportcert -list -v \ -alias YOUR-KEY-NAME -keystore PATH-TO-KEYSTORE
Można też uzyskać skrót SHA certyfikatu podpisywania za pomocą polecenie gradle
signingReport
:gradlew signingReport
Plik APK musi być podpisany tym kluczem, również w trakcie tworzenia.
Włącz Google Play Games jako dostawcę logowania:
W konsoli Firebase otwórz Authentication.
Generowanie i uzyskiwanie identyfikatora klienta i klienta serwera WWW projektu obiekt tajny:
Na karcie Metoda logowania włącz logowanie przez Google. dostawcy usług.
Skopiuj identyfikator klienta i tajny klucz serwera WWW z sekcji logowania Google dostawcy usług.
Na karcie Metoda logowania włącz Play Games. dostawcy logowania i określ identyfikator klienta serwera WWW swojego projektu (tajny klucz klienta) uzyskany w ostatnim kroku.
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 stronach Wydarzenia, Osiągnięcia i Tabele wyników utwórz Play Games zasobów, które chcesz wykorzystać w grze (jeśli ich nie masz) którego chcesz użyć od razu, możesz utworzyć wpis zastępczy). Następnie na dowolnej stronie Wydarzenia, Osiągnięcia lub Tabele wyników kliknij Pobierz zasoby i skopiuj gdzieś fragment kodu zasobów Androida co jest bardzo wygodne. Fragment kodu jest potrzebny do skonfigurowania Google Play Games services wtyczki.
Fragment kodu zasobu wygląda w tym przykładzie:
<?xml version="1.0" encoding="utf-8"?> <!-- Google Play game services IDs. Save this file as res/values/games-ids.xml in your project. --> <resources> <!-- app_id --> <string name="app_id" translatable="false">123456789000</string> <!-- package_name --> <string name="package_name" translatable="false">com.example.game</string> <!-- event Wiped Raid --> <string name="event_wiped_raid" translatable="false">CgkIpKjv1a4PEAIYBA</string> </resources>
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ą
Pobierz najnowszą wersję programu Wtyczka Gry Play do Unity i wyodrębnić.
Zaimportuj pakiet Unity wtyczki do projektu Unity. Dodatkowe informacje na temat Pakiet Unity w katalogu
current-build
archiwum wersji.Skonfiguruj wtyczkę Gry Play:
- Kliknij Okno > Gry Google Play > Konfiguracja > Konfiguracja Androida, aby otworzyć Ekran Konfiguracja Androida.
- Wklej fragment kodu zasobów Androida pobrany z Konsoli Play. w polu Definicja zasobów.
- Wklej identyfikator klienta serwera WWW podany przy aktywacji Zaloguj się w Grach Play w konsoli Firebase za pomocą identyfikatora klienta. .
- Kliknij Konfiguruj.
Skonfiguruj w swojej grze klienta Gier Play z wykorzystaniem
RequestServerAuthCode
włączone ustawienie:using GooglePlayGames; using GooglePlayGames.BasicApi; using UnityEngine.SocialPlatforms; using System.Threading.Tasks; PlayGamesClientConfiguration config = new PlayGamesClientConfiguration.Builder() .RequestServerAuthCode(false /* Don't force refresh */) .Build(); PlayGamesPlatform.InitializeInstance(config); PlayGamesPlatform.Activate();
Następnie, gdy gracz zdecyduje się zalogować w Grach Play, wywołaj polecenie
Social.localUser.Authenticate()
:Social.localUser.Authenticate((bool success) => { // handle success or failure });
Uwierzytelnij za pomocą Firebase
Po dodaniu do gry logowania w Grach Play możesz używać kodu autoryzacji z usług Gier Play do uwierzytelniania w Firebase.
Gdy gracz zaloguje się za pomocą Gier Play, zaloguj się w aplikacji do obsługi kontynuacji, pobierz kod autoryzacji dla konta gracza:
Social.localUser.Authenticate((bool success) => { if (success) { authCode = PlayGamesPlatform.Instance.GetServerAuthCode(); } });
Następnie wymień kod autoryzacji z usług Gier Play na potrzeby Firebase dane logowania i użyj danych logowania Firebase, aby uwierzytelnić gracza:
Firebase.Auth.FirebaseAuth auth = Firebase.Auth.FirebaseAuth.DefaultInstance; Firebase.Auth.Credential credential = Firebase.Auth.PlayGamesAuthProvider.GetCredential(authCode); auth.SignInAndRetrieveDataWithCredentialAsync(credential).ContinueWith(task => { if (task.IsCanceled) { Debug.LogError("SignInAndRetrieveDataWithCredentialAsync was canceled."); return; } if (task.IsFaulted) { Debug.LogError("SignInAndRetrieveDataWithCredentialAsync encountered an error: " + task.Exception); return; } Firebase.Auth.AuthResult result = task.Result; Debug.LogFormat("User signed in successfully: {0} ({1})", result.User.DisplayName, result.User.UserId); });
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 grze możesz uzyskać identyfikator Firebase UID użytkownika w aplikacji
Firebase.Auth.FirebaseUser
obiekt:
Firebase.Auth.FirebaseUser user = auth.CurrentUser;
if (user != null && user.IsValid()) {
string 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 User.TokenAsync() instead.
string uid = user.UserId;
}
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ępnianych przez wtyczkę Gier Play.
Aby wylogować użytkownika, zadzwoń pod numer SignOut()
:
auth.SignOut();