Możesz korzystać z usług Gier Google Play, aby logować graczy do gry na Androida opartej na Firebase i Unity. Aby korzystać z usług Gier Google Play, zaloguj się przez Firebase, najpierw zaloguj się do odtwarzacza w Grach Google Play, a następnie poproś o kod uwierzytelniający OAuth 2.0. Następnie przekaż kod uwierzytelniający do PlayGamesAuthProvider
, aby wygenerować poświadczenie Firebase, którego możesz użyć do uwierzytelnienia w Firebase.
Zanim zaczniesz
Skonfiguruj swój projekt Unity
Dodaj plik konfiguracyjny Firebase i zestaw Firebase Unity SDK do swojego projektu Unity zgodnie z opisem w temacie Dodawanie Firebase do projektu Unity . Postępuj zgodnie z instrukcjami dla Androida.
Pamiętaj, aby zaimportować
FirebaseAuth.unitypackage
.W edytorze Unity w sekcji Ustawienia kompilacji > Ustawienia odtwarzacza > Inne ustawienia ustaw nazwę pakietu Android swojej gry.
Następnie w obszarze Ustawienia kompilacji > Ustawienia odtwarzacza > Ustawienia publikowania wybierz lub utwórz magazyn kluczy i klucz, który będzie używany do podpisywania pakietu Android. Twój plik APK musi być podpisany, aby logowanie w Grach Play działało – ten wymóg dotyczy nie tylko publikowania, ale także tworzenia gry.
Skonfiguruj swój projekt Firebase
W konsoli Firebase przejdź do projektu Firebase, w którym zarejestrowałeś swój projekt Unity.
Ustaw odcisk cyfrowy SHA-1 swojej gry na stronie Ustawienia konsoli Firebase, używając klucza ustawionego w Unity.
Możesz uzyskać odcisk palca SHA-1 swojego klucza za pomocą polecenia
keytool
:keytool -exportcert -list -v \ -alias YOUR-KEY-NAME -keystore PATH-TO-KEYSTORE
Alternatywnie możesz uzyskać skrót SHA swojego certyfikatu podpisującego za pomocą polecenia gradle
signingReport
:gradlew signingReport
Twój plik APK musi być podpisany tym kluczem, także podczas programowania.
Włącz Gry Google Play jako dostawca logowania:
W konsoli Firebase otwórz sekcję Uwierzytelnianie .
Wygeneruj i uzyskaj identyfikator klienta serwera WWW i klucz tajny klienta swojego projektu:
Na karcie Metoda logowania włącz dostawcę logowania Google .
Skopiuj identyfikator klienta serwera WWW i klucz tajny od dostawcy logowania Google .
Na karcie Metoda logowania włącz dostawcę logowania do Gier Play i podaj identyfikator klienta serwera sieciowego projektu oraz klucz tajny klienta, które uzyskałeś w ostatnim kroku.
Skonfiguruj usługi Gier Play, korzystając z informacji o aplikacji Firebase
W Konsoli Google Play otwórz aplikację Google Play lub ją utwórz.
W sekcji Rozwój kliknij Usługi gier Play > Konfiguracja i zarządzanie > Konfiguracja .
Kliknij Tak, moja gra korzysta już z interfejsów API Google , wybierz z listy swój projekt Firebase, a następnie kliknij Użyj .
Na stronie konfiguracji usług Gier Play kliknij Dodaj dane logowania .
- Wybierz typ serwera gier .
- W polu Klient OAuth wybierz identyfikator klienta internetowego projektu. Upewnij się, że jest to ten sam identyfikator klienta, który podałeś podczas włączania logowania w Grach Play.
- Zapisz zmiany.
Nadal na stronie konfiguracji usług Gier Play ponownie kliknij Dodaj dane logowania .
- Wybierz typ Androida .
- W polu Klient OAuth wybierz identyfikator klienta Android swojego projektu. (Jeśli nie widzisz swojego identyfikatora klienta Androida, upewnij się, że ustawiłeś odcisk palca 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 swojej grze (jeśli nie chcesz ich od razu używać, 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 zasobów Androida w dogodne miejsce. Fragment kodu będzie potrzebny do skonfigurowania wtyczki usług Google Play Games.
Fragment kodu zasobów wygląda jak w poniższym 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ę do Twojej gry, zanim opublikujesz ją w Sklepie Play.
Zintegruj logowanie w Grach Play ze swoją grą
Pobierz najnowszą wersję wtyczki Play Games dla Unity i rozpakuj ją.
Zaimportuj pakiet Unity wtyczki do swojego projektu Unity. Pakiet Unity można znaleźć w
current-build
katalogu kompilacji archiwum wydania.Skonfiguruj wtyczkę Gry Play:
- Kliknij Okno > Gry Google Play > Konfiguracja > Konfiguracja systemu Android, aby otworzyć ekran Konfiguracja systemu Android .
- Wklej fragment kodu zasobów Androida pobrany z konsoli Play w polu Definicja zasobów .
- Wklej swój identyfikator klienta serwera WWW, który podałeś podczas włączania logowania w Grach Play w konsoli Firebase, w polu Client ID .
- Kliknij Ustawienia .
W swojej grze skonfiguruj 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 w Firebase
Po dodaniu logowania w Grach Play do swojej gry możesz użyć kodu uwierzytelniającego z usług Gier Play, aby uwierzytelnić się w Firebase.
Gdy gracz pomyślnie zaloguje się w Grach Play, w procedurze obsługi kontynuacji logowania pobierz kod uwierzytelniający do konta gracza:
Social.localUser.Authenticate((bool success) => { if (success) { authCode = PlayGamesPlatform.Instance.GetServerAuthCode(); } });
Następnie wymień kod uwierzytelniający z usług Gier Play na dane logowania Firebase i użyj tych danych logowania 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); });
Następne kroki
Gdy użytkownik zaloguje się po raz pierwszy, tworzone jest nowe konto użytkownika, które jest powiązane z jego identyfikatorem Gier Play. To nowe konto jest przechowywane jako część Twojego projektu Firebase i może służyć do identyfikacji użytkownika w każdej aplikacji 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 Regułach bezpieczeństwa Firebase Realtime Database i Cloud Storage możesz uzyskać unikalny identyfikator zalogowanego użytkownika ze zmiennej auth
i użyć go do kontrolowania, do jakich danych użytkownik ma dostęp.
Aby uzyskać informacje o graczach Gier Play użytkownika lub uzyskać dostęp do usług Gier Play, użyj interfejsów API udostępnianych przez wtyczkę Gier Play.
Aby wylogować użytkownika, wywołaj SignOut()
:
auth.SignOut();