E-mail i hasło
Konto gracza z adresem e-mail i hasłem: rejestracja, logowanie, weryfikacja adresu i reset hasła.
Wymaga metody E-mail i hasło włączonej w panelu dla danego środowiska. Bez niej usługa odpowiada 403 provider_disabled.
Rejestracja#
/v1/authentication/email/sign-up| Pole | Opis |
|---|---|
email | Adres gracza. |
password | Hasło spełniające politykę haseł projektu (domyślnie co najmniej 6 znaków). |
displayName | Opcjonalnie: nazwa gracza (do 64 znaków). |
locale | Opcjonalnie: język wiadomości e-mail (pl, en, de, cs, uk). Bez niego - z nagłówka Accept-Language. |
[Serializable] public class SignUpRequest { public string email; public string password; public string displayName; public string locale; }
var request = new SignUpRequest { email = "gracz@example.com", password = "Haslo12345", displayName = "Gracz", locale = "pl" };
yield return Post("/email/sign-up", JsonUtility.ToJson(request), null, body =>
{
var auth = JsonUtility.FromJson<AuthResponse>(body);
PlayerPrefs.SetString("nunox_session", auth.sessionToken);
}, (status, body) => Debug.LogError($"Błąd {status}: {body}"));
const auth = await call("/email/sign-up", {
email: "gracz@example.com",
password: "Haslo12345",
displayName: "Gracz",
locale: "pl",
});
curl -X POST https://player-auth.services.api.sandbox.gamevious.com/v1/authentication/email/sign-up \
-H "Content-Type: application/json" -H "X-Project-Id: prj_gv_…" -H "X-Environment: env_gv_…" \
-d '{"email":"gracz@example.com","password":"Haslo12345","displayName":"Gracz","locale":"pl"}'
Odpowiedź zawiera tokeny (gracz jest od razu zalogowany) i pole verificationEmailSent - przy rejestracji usługa wysyła link potwierdzający adres, z szablonu ustawionego w panelu.
| Błąd | Co zrobić w grze |
|---|---|
409 email_exists | Zaproponuj logowanie albo reset hasła. |
422 weak_password | Pokaż wymagania z error.details.requirements: min_length, max_length, uppercase, lowercase, numeric, special. |
422 invalid_email | Poproś o poprawny adres. |
403 sign_up_disabled | Projekt nie pozwala graczom zakładać kont samodzielnie. |
429 sign_up_rate_limited | Za dużo kont z jednego adresu IP - spróbuj później. |
Jeśli polityka haseł działa w trybie „Powiadamiaj”, słabe hasło jest przyjmowane, a odpowiedź zawiera passwordPolicyViolations - możesz wtedy zachęcić gracza do zmiany hasła.
Logowanie#
/v1/authentication/email/sign-in[Serializable] public class SignInRequest { public string email; public string password; }
yield return Post("/email/sign-in", JsonUtility.ToJson(new SignInRequest { email = email, password = password }), null, body =>
{
if (body.Contains("\"mfaRequired\":true")) { /* drugi krok - kod SMS */ return; }
var auth = JsonUtility.FromJson<AuthResponse>(body);
PlayerPrefs.SetString("nunox_session", auth.sessionToken);
}, (status, body) => Debug.LogError($"Błąd {status}: {body}"));
const result = await call("/email/sign-in", { email, password });
if (result.mfaRequired) {
// drugi krok - kod SMS (result.mfaPendingCredential, result.factors)
} else {
localStorage.setItem("nunox_session", result.sessionToken);
}
curl -X POST https://player-auth.services.api.sandbox.gamevious.com/v1/authentication/email/sign-in \
-H "Content-Type: application/json" -H "X-Project-Id: prj_gv_…" -H "X-Environment: env_gv_…" \
-d '{"email":"gracz@example.com","password":"Haslo12345"}'
Jeśli gracz ma włączoną weryfikację dwuetapową, zamiast tokenów przychodzi mfaRequired: true - gra prosi wtedy o kod SMS.
| Błąd | Znaczenie |
|---|---|
401 invalid_credentials | Zły adres albo hasło. Przy włączonej ochronie przed wyliczaniem adresów ten sam błąd oznacza też nieistniejące konto - nie zdradzaj graczowi, który przypadek zaszedł. |
429 too_many_attempts | 10 nieudanych prób w 15 minut na ten adres. Poproś o odczekanie. |
403 account_suspended, 403 account_banned | Konto zawieszone albo zablokowane przez studio. |
Weryfikacja adresu e-mail#
Link weryfikacyjny wychodzi automatycznie przy rejestracji. Gracz może poprosić o kolejny (zalogowany, z idToken):
/v1/authentication/email/verificationcurl -X POST https://player-auth.services.api.sandbox.gamevious.com/v1/authentication/email/verification \
-H "Content-Type: application/json" -H "X-Project-Id: prj_gv_…" -H "X-Environment: env_gv_…" \
-H "Authorization: Bearer <idToken>" -d '{"locale":"pl"}'
Link jest ważny 24 godziny, a nowy unieważnia poprzedni. Po potwierdzeniu player.emailVerified ma wartość true, a stan konta verified.
Reset hasła#
/v1/authentication/password/resetcurl -X POST https://player-auth.services.api.sandbox.gamevious.com/v1/authentication/password/reset \
-H "Content-Type: application/json" -H "X-Project-Id: prj_gv_…" -H "X-Environment: env_gv_…" \
-d '{"email":"gracz@example.com","locale":"pl"}'
Odpowiedź to zawsze {"sent": true}, także dla nieistniejącego adresu (ochrona przed wyliczaniem). Link jest ważny godzinę. Po zmianie hasła pozostałe sesje gracza są unieważniane, jeśli w Ustawieniach włączono „Wyloguj z innych urządzeń po zmianie hasła”.
Gdzie prowadzą linki z e-maili#
Domyślnie link prowadzi na stronę Gamevious, na której gracz potwierdza adres albo ustawia nowe hasło. Jeśli wolisz własną stronę, ustaw w panelu w szablonie Własny adres akcji, np. https://twojagra.pl/auth/action. Link dostaje wtedy parametry:
| Parametr | Znaczenie |
|---|---|
mode | verifyEmail, resetPassword albo revokeMfa. |
oobCode | Jednorazowy kod akcji. |
project, env | Identyfikatory projektu i środowiska do nagłówków. |
lang | Język gracza. |
Twoja strona kończy akcję przez API:
/v1/authentication/action/apply{ "oobCode": "…" } // potwierdzenie adresu
/v1/authentication/password/reset/confirm{ "oobCode": "…", "newPassword": "NoweHaslo123" }
Nie wykonuj akcji przy samym otwarciu strony. Programy pocztowe i skanery antywirusowe często same otwierają linki z wiadomości. Wywołaj API dopiero po kliknięciu przycisku przez gracza - inaczej kod może zostać zużyty, zanim gracz go użyje.