Za pomocą usług Gier Google Play możesz logować graczy w grach na Androida opartych na Firebase i Unity. Aby korzystać z usług Gier Google Play, logując się za pomocą Firebase, najpierw zaloguj się do odtwarzacza za pomocą Gier Google Play i poproś o kod uwierzytelniania OAuth 2.0, gdy to zrobisz. Następnie przekaż kod uwierzytelniający do PlayGamesAuthProvider
, aby wygenerować dane logowania Firebase, których możesz użyć do uwierzytelniania w Firebase.
Zanim zaczniesz
Skonfiguruj swój projekt Unity
Dodaj plik konfiguracyjny Firebase i pakiet SDK Firebase Unity do projektu Unity zgodnie z opisem w sekcji Dodawanie Firebase do projektu Unity . Postępuj zgodnie z instrukcjami dla Androida.
Pamiętaj o zaimportowaniu
FirebaseAuth.unitypackage
.W edytorze Unity w obszarze Ustawienia kompilacji > Ustawienia gracza > Inne ustawienia ustaw nazwę pakietu Androida swojej gry.
Następnie w obszarze Ustawienia kompilacji > Ustawienia odtwarzacza > Ustawienia publikowania wybierz lub utwórz magazyn kluczy i klucz, które będą używane do podpisywania pakietu Androida. Aby logowanie w Grach Play działało, plik APK musi być podpisany. To wymaganie dotyczy nie tylko publikowania, ale także tworzenia gry.
Skonfiguruj projekt Firebase
W konsoli Firebase przejdź do projektu Firebase, w którym zarejestrowałeś swój projekt Unity.
Ustaw odcisk palca 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 certyfikatu podpisującego za pomocą polecenia gradle
signingReport
:gradlew signingReport
Twój pakiet APK musi być podpisany tym kluczem, także podczas programowania.
Włącz Gry Google Play jako dostawcę logowania:
Znajdź identyfikator klienta serwera WWW i tajny klucz klienta. Identyfikator klienta serwera WWW identyfikuje Twój projekt Firebase na serwerach uwierzytelniania Google Play.
Aby znaleźć te wartości:
- Otwórz projekt Firebase na stronie danych logowania konsoli interfejsów API Google .
- W sekcji Identyfikatory klientów OAuth 2.0 otwórz stronę szczegółów klienta internetowego (utworzonego automatycznie przez usługę Google) . Na tej stronie znajduje się twój identyfikator klienta serwera WWW i klucz tajny.
Następnie w konsoli Firebase otwórz sekcję Uwierzytelnianie .
Na karcie Metoda logowania włącz dostawcę logowania do Gier Play . Musisz określić identyfikator klienta serwera WWW swojego projektu i klucz tajny klienta, które uzyskałeś z konsoli interfejsów API.
Skonfiguruj usługi Gier Play przy użyciu informacji o aplikacji Firebase
W Konsoli Google Play otwórz aplikację Google Play lub ją utwórz.
W sekcji Rozwijaj się kliknij Usługi gier Play > Konfiguracja i zarządzanie > Konfiguracja .
Kliknij Tak, moja gra korzysta już z interfejsów Google API , wybierz swój projekt Firebase z listy, a następnie kliknij Użyj .
Na stronie konfiguracji usług Gier Play kliknij Dodaj poświadczenia .
- Wybierz typ serwera gry .
- 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 poświadczenia .
- Wybierz typ Androida .
- W polu Klient OAuth wybierz identyfikator klienta Android 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 Zdarzenia , 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 używać ich 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 fragment kodu zasobów Androida w dogodne miejsce. Fragment kodu będzie potrzebny do skonfigurowania wtyczki usług gier Google Play.
Fragment kodu zasobów wygląda jak w następującym 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 przed opublikowaniem jej w Sklepie Play.
Zintegruj logowanie do Gier Play ze swoją grą
Pobierz najnowszą wersję wtyczki Gry Play dla Unity i rozpakuj ją.
Zaimportuj pakiet Unity wtyczki do swojego projektu Unity. Pakiet Unity można znaleźć w katalogu
current-build
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 otrzymany z Konsoli Play w polu Definicja zasobów .
- W polu Identyfikator klienta wklej identyfikator klienta serwera internetowego podany podczas włączania logowania w Grach Play w konsoli Firebase.
- 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 się w Firebase
Gdy dodasz do gry logowanie w Grach Play, możesz użyć kodu uwierzytelniającego z usług Gier Play, by uwierzytelnić się w Firebase.
Po pomyślnym zalogowaniu się gracza przy użyciu Gier Play w module obsługi kontynuacji logowania uzyskaj kod autoryzacji dla 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 danych logowania Firebase, aby uwierzytelnić gracza:
Firebase.Auth.FirebaseAuth auth = Firebase.Auth.FirebaseAuth.DefaultInstance; Firebase.Auth.Credential credential = Firebase.Auth.PlayGamesAuthProvider.GetCredential(authCode); auth.SignInWithCredentialAsync(credential).ContinueWith(task => { if (task.IsCanceled) { Debug.LogError("SignInWithCredentialAsync was canceled."); return; } if (task.IsFaulted) { Debug.LogError("SignInWithCredentialAsync encountered an error: " + task.Exception); return; } Firebase.Auth.FirebaseUser newUser = task.Result; Debug.LogFormat("User signed in successfully: {0} ({1})", newUser.DisplayName, newUser.UserId); });
Następne kroki
Gdy użytkownik zaloguje się po raz pierwszy, zostanie utworzone nowe konto użytkownika i powiązane z jego identyfikatorem Gier Play. To nowe konto jest przechowywane jako część projektu Firebase i może służyć do identyfikowania użytkownika w każdej aplikacji w projekcie.
W swojej grze możesz uzyskać identyfikator użytkownika Firebase z obiektu Firebase.Auth.FirebaseUser
:
Firebase.Auth.FirebaseUser user = auth.CurrentUser;
if (user != null) {
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 bazy danych czasu rzeczywistego i usługi Cloud Storage Firebase możesz uzyskać unikalny identyfikator zalogowanego użytkownika ze zmiennej auth
i używać go do kontrolowania, do jakich danych użytkownik może uzyskać dostęp.
Aby uzyskać informacje o odtwarzaczu Gier Play użytkownika lub uzyskać dostęp do usług Gier Play, użyj interfejsów API udostępnianych przez wtyczkę Gry Play.
Aby wylogować użytkownika, wywołaj SignOut()
:
auth.SignOut();