Gamevious Developers

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#

POST/v1/authentication/email/sign-up
PoleOpis
emailAdres gracza.
passwordHasło spełniające politykę haseł projektu (domyślnie co najmniej 6 znaków).
displayNameOpcjonalnie: nazwa gracza (do 64 znaków).
localeOpcjonalnie: 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łądCo zrobić w grze
409 email_existsZaproponuj logowanie albo reset hasła.
422 weak_passwordPokaż wymagania z error.details.requirements: min_length, max_length, uppercase, lowercase, numeric, special.
422 invalid_emailPoproś o poprawny adres.
403 sign_up_disabledProjekt nie pozwala graczom zakładać kont samodzielnie.
429 sign_up_rate_limitedZa 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#

POST/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łądZnaczenie
401 invalid_credentialsZł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_attempts10 nieudanych prób w 15 minut na ten adres. Poproś o odczekanie.
403 account_suspended, 403 account_bannedKonto zawieszone albo zablokowane przez studio.

Weryfikacja adresu e-mail#

Link weryfikacyjny wychodzi automatycznie przy rejestracji. Gracz może poprosić o kolejny (zalogowany, z idToken):

POST/v1/authentication/email/verification
curl -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 &lt;idToken&gt;" -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#

POST/v1/authentication/password/reset
curl -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:

ParametrZnaczenie
modeverifyEmail, resetPassword albo revokeMfa.
oobCodeJednorazowy kod akcji.
project, envIdentyfikatory projektu i środowiska do nagłówków.
langJęzyk gracza.

Twoja strona kończy akcję przez API:

POST/v1/authentication/action/apply
{ "oobCode": "…" }   // potwierdzenie adresu
POST/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.