Prijava preko Millida na tvom sajtu
Poveži dugme „Prijava preko Millida“ — prijava preko Millida naloga za posetioce tvog sajta. Registracija aplikacije, tok autorizacije, provera tokena.
Ažurirano 7. septembar 2026.
Millida može da radi kao provajder identiteta: posetilac klikne „Prijavi se preko Millida“ na tvom sajtu, potvrdi prenos podataka i vrati se već prijavljen. Radi preko OpenID Connect — baš kao prijava preko Google, Apple ili Discord — pa će svaka gotova OIDC biblioteka raditi.
Izlaže se samo identitet: Minecraft nadimak, ime, avatar i — ako zatražiš i osoba pristane — imejl, skin, povezani Discord i Telegram i reputacija na platformi. Stanja, transakcije i serveri nisu dostupni aplikacijama.
Šta treba da uradiš
1. Napravi aplikaciju
Profil → API i vebhukovi → kartica Prijava preko Millida → „Napravi aplikaciju“.
Trebaće ti:
- Naziv — osoba će ga videti na ekranu za prijavu. Reč „Millida“ je zabranjena u nazivu tuđe aplikacije.
- Redirect URI — gde da se korisnik vrati nakon potvrde. Samo
https(za razvoj je dozvoljenhttp://localhost). Poklapa se u celosti: dodatna kosa crta ili dodat parametar više neće odgovarati. - Link ka politici privatnosti — osoba će ga videti pre nego što ti prenese podatke.
Nakon kreiranja dobićeš client_id i, za serversku aplikaciju, client_secret. Tajna se prikazuje samo jednom — sačuvaj je odmah.
Tip aplikacije: server, ako imaš backend koji može da čuva tajnu; public, ako je u pitanju SPA ili mobilna aplikacija i nema gde da se sakrije tajna.
2. Prosledi URL provajdera biblioteci
https://id.millida.net
To je dovoljno: biblioteka će sama pročitati https://id.millida.net/.well-known/openid-configuration i pronaći ostale URL-ove.
3. Pošalji osobu na prijavu
https://id.millida.net/oauth/authorize
?response_type=code
&client_id=your_client_id
&redirect_uri=https://your-site.ru/auth/millida/callback
&scope=openid profile email
&state=random_string
&nonce=random_string
&code_challenge=base64url(sha256(code_verifier))
&code_challenge_method=S256
PKCE je obavezan za sve, uključujući serverske aplikacije. Sačuvaj state u sesiji i proveri ga pri povratku — bez toga se tuđi odgovor može ubaciti u tvoju sesiju.
4. Zameni kod za tokene
POST https://id.millida.net/oauth/token
Content-Type: application/x-www-form-urlencoded
Authorization: Basic base64(client_id:client_secret)
grant_type=authorization_code&code=…&redirect_uri=…&code_verifier=…
Odgovor sadrži access_token, id_token i, ako si zatražio offline_access, refresh_token.
5. Saznaj ko se prijavio
Parsiraj id_token (proveri potpis prema JWKS, iss, aud, exp, nonce) ili zatraži:
GET https://id.millida.net/oauth/userinfo
Authorization: Bearer <access_token>
Koje podatke možeš da zatražiš
| Šta tražiš | Šta dobijaš |
|---|---|
openid | sub — identifikator korisnika, obavezno |
profile | nadimak, ime, avatar, link profila |
email | imejl adresa i da li je potvrđena |
minecraft | Minecraft nadimak, njegov UUID, izdanje i linkove ka trenutnom skinu i plaštu |
discord | identifikator i naziv povezanog Discord-a |
telegram | identifikator i @ime povezanog Telegram-a |
reputation | lajkovi na profilu, broj postignuća, datum registracije, oznaka verifikovanog naloga |
offline_access | pravo da osvežavaš pristup dok osoba ne opozove |
Oflajn nadimak nema UUID — minecraft_uuid će biti prazan, a minecraft_username će se popuniti iz naloga. telegram_id dolazi kao string: Telegram chat id ne staje u JSON tačan broj, a parsiranje kao broj kvari poslednje cifre.
Traži samo ono što je neophodno da prijava radi: osoba čita svaku dodatnu stavku na ekranu za pristanak i može da se predomisli odmah tu.
O identifikatoru korisnika
sub je različit za svaku aplikaciju za istu osobu. Nepromenljiv je za tvoj sajt, ali se ne poklapa sa sub-om na drugim sajtovima — ne možeš da uparuješ publiku između aplikacija preko njega.
Čuvaj sub kao ključ korisnika. Imejl za to nije pogodan: može se promeniti.
Verifikacija aplikacije
Nova aplikacija radi odmah, ali je na ekranu za prijavu označena kao neverifikovana. Kada sajt bude spreman, klikni „Pošalji na pregled“ u panelu — pogledaćemo i ukloniti oznaku.
Česte greške
„redirect_uri does not match any registered address“ — adresa se poklapa kao ceo string. Proveri kosu crtu na kraju, šemu i port.
„Only code_challenge_method=S256 is supported“ — PKCE je obavezan, plain se ne prihvata.
„The authorization code has already been used“ — kod je jednokratan i živi minut. Ponovna zamena se smatra znakom curenja i potpuno opoziva pristup aplikacije.
Token je prestao da radi nakon opoziva — osoba je onemogućila aplikaciju u bezbednosnim podešavanjima profila. To je očekivano ponašanje: pošalji je na ponovnu prijavu.
Kako osoba opoziva pristup
Profil → Bezbednost → „Povezane aplikacije“ → „Opozovi“. Pristup se prekida odmah, a svi izdati tokeni postaju mrtvi.