Za pomocą usług Gier Google Play możesz logować się w grach na Androida utworzonych w Firebase i Unity. Aby zalogować się w usługach gier Google Play przez Firebase, zaloguj się w odtwarzaczu w Grach Google Play i w razie potrzeby poproś o kod autoryzacji OAuth 2.0. Następnie przekaż ten kod do aplikacji PlayGamesAuthProvider
, by wygenerować dane logowania Firebase, których możesz używać do uwierzytelniania w Firebase.
Zanim zaczniesz
Konfigurowanie projektu w Unity
Dodaj plik konfiguracyjny Firebase i pakiet SDK Firebase Unity do projektu w Unity zgodnie z opisem w sekcji Dodawanie Firebase do projektu Unity. Postępuj zgodnie z instrukcjami dotyczącymi Androida.
Pamiętaj, aby zaimportować:
FirebaseAuth.unitypackage
.W edytorze Unity, w sekcji Ustawienia kompilacji > Ustawienia gracza > Inne ustawienia wpisz nazwę pakietu na Androida Twojej gry.
Następnie w sekcji Ustawienia kompilacji > Ustawienia odtwarzacza > Ustawienia publikowania wybierz lub utwórz magazyn kluczy i klucz, które będą używane do podpisania pakietu na Androida. Aby logowanie w Grach Play działało, plik APK musi być podpisany – wymaga to nie tylko publikowania, ale też tworzenia gry.
Skonfiguruj projekt Firebase
W konsoli Firebase otwórz projekt Firebase, w którym został zarejestrowany Twój projekt Unity.
Ustaw odcisk cyfrowy SHA-1 swojej gry na stronie Ustawienia w konsoli Firebase za pomocą 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
Hasz SHA certyfikatu podpisywania możesz też uzyskać za pomocą polecenia Grale
signingReport
:gradlew signingReport
Plik APK musi być podpisany tym kluczem, również w trakcie tworzenia.
Włącz Gry Google Play jako dostawcę logowania:
W konsoli Firebase otwórz sekcję Uwierzytelnianie.
Wygeneruj i uzyskaj identyfikator klienta serwera WWW oraz tajny klucz klienta:
Na karcie Metoda logowania włącz dostawcę logowania Google.
Skopiuj identyfikator klienta i obiekt tajny serwera WWW z usługi logowania Google.
Na karcie Metoda logowania włącz dostawcę logowania w Grach Play i podaj identyfikator klienta serwera WWW oraz tajny klucz klienta uzyskane w ostatnim kroku.
Skonfiguruj usługi Gier Play, używając informacji z aplikacji Firebase
W Konsoli Google Play otwórz lub utwórz aplikację Google Play.
W sekcji Rozwój kliknij Usługi gier Play > Konfiguracja i zarządzanie > Konfiguracja.
Kliknij Tak, moja gra już korzysta z interfejsów API Google, wybierz z listy swój projekt Firebase i kliknij Użyj.
Na stronie konfiguracji usług gier Play kliknij Dodaj dane logowania.
- Wybierz typ Serwer gry.
- W polu Klient OAuth wybierz identyfikator klienta internetowego swojego projektu. Upewnij się, że to identyfikator klienta podany podczas włączania logowania w Grach Play.
- Zapisz zmiany.
Pozostając na stronie konfiguracji usług gier Play, ponownie kliknij Dodaj dane logowania.
- Wybierz typ Androida.
- W polu Klient OAuth wybierz identyfikator klienta Androida dla swojego projektu. Jeśli nie widzisz identyfikatora klienta Androida, pamiętaj, aby ustawić odcisk cyfrowy SHA-1 gry w konsoli Firebase.
- Zapisz zmiany.
Na stronach Wydarzenia, Osiągnięcia i Tabele wyników utwórz dowolne zasoby Gier Play, których chcesz używać w grze (jeśli nie chcesz ich od razu wykorzystywać, możesz utworzyć wpis zastępczy). Następnie na dowolnej stronie Wydarzenia, Osiągnięcia lub Tabele wyników kliknij Pobierz zasoby i skopiuj fragment kodu z zasobami Androida w dogodnym miejscu. Ten fragment kodu jest potrzebny do skonfigurowania wtyczki usług gier Google Play.
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 muszą mieć możliwość zalogowania się w Twojej grze, zanim opublikujesz ją w Sklepie Play.
Integrowanie logowania w Grach Play z grą
Pobierz najnowszą wersję wtyczki Gry Play do Unity i wyodrębnij ją.
Zaimportuj pakiet Unity wtyczki do projektu Unity. Pakiet Unity znajdziesz w katalogu
current-build
archiwum wersji.Skonfiguruj wtyczkę Gry Play:
- Kliknij Okno > Gry Google Play > Konfiguracja > Konfiguracja Androida, by otworzyć ekran Konfiguracja Androida.
- W polu Definicja zasobów wklej fragment kodu zasobów Androida pobrany z Konsoli Play.
- W polu Client ID (Identyfikator klienta) wklej identyfikator klienta serwera WWW podany przy włączaniu logowania przez Gry Play w konsoli Firebase.
- Kliknij Konfiguruj.
Skonfiguruj w swojej grze klienta Gier Play z włączonym ustawieniem
RequestServerAuthCode
: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
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, by uwierzytelniać się w Firebase.
Gdy gracz zaloguje się za pomocą Gier Play, w module obsługi kontynuacji logowania pobierz kod autoryzacji konta gracza:
Social.localUser.Authenticate((bool success) => { if (success) { authCode = PlayGamesPlatform.Instance.GetServerAuthCode(); } });
Następnie wymień kod autoryzacji z usług gier Play na dane logowania Firebase i użyj danych logowania Firebase do uwierzytelnienia 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 loguje się po raz pierwszy, tworzone jest nowe konto użytkownika, które jest łączone z jego identyfikatorem w Grach Play. Nowe konto będzie przechowywane w ramach Twojego projektu Firebase i może służyć do identyfikowania użytkownika we wszystkich aplikacjach w Twoim projekcie.
W swojej grze możesz uzyskać identyfikator Firebase UID użytkownika z obiektu Firebase.Auth.FirebaseUser
:
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ć ze zmiennej auth
unikalny identyfikator zalogowanego użytkownika i użyć go do kontrolowania, do jakich danych użytkownik ma dostęp.
Aby uzyskać informacje o użytkowniku w Grach Play lub uzyskać dostęp do usług Gier Play, użyj interfejsów API dostępnych we wtyczce Gry Play.
Aby wylogować użytkownika, zadzwoń pod numer SignOut()
:
auth.SignOut();