Вхід через Millida на вашому сайті
Підключення кнопки «Вхід через Millida» — вхід через акаунт Millida для відвідувачів вашого сайту. Реєстрація застосунку, процес авторизації, перевірка токена.
Оновлено 7 вересня 2026 р.
Millida може виступати постачальником ідентичності: відвідувач натискає «Увійти через Millida» на вашому сайті, підтверджує передавання даних і повертається вже автентифікованим. Це працює через OpenID Connect — так само, як вхід через Google, Apple чи Discord, — тож підійде будь-яка готова бібліотека OIDC.
Назовні відкривається лише ідентичність: нікнейм Minecraft, ім'я, аватар і — якщо ви його запросите, а людина погодиться — email, скін, прив'язані Discord і Telegram та репутація на платформі. Баланси, транзакції та сервери застосункам недоступні.
Що потрібно зробити
1. Створіть застосунок
Профіль → API та вебхуки → вкладка Увійти через Millida → «Створити застосунок».
Вам знадобляться:
- Назва — людина побачить її на екрані входу. Слово «Millida» заборонене в назві чужого застосунку.
- Redirect URI — куди повернути користувача після підтвердження. Лише
https(для розробки дозволеноhttp://localhost). Збіг перевіряється повністю: зайвий слеш або доданий параметр уже не збігатимуться. - Посилання на політику конфіденційності — людина побачить його перед передаванням даних вам.
Після створення ви отримаєте client_id і, для серверного застосунку, client_secret. Секрет показується лише один раз — збережіть його негайно.
Тип застосунку: серверний, якщо у вас є бекенд, який може зберігати секрет; публічний, якщо це SPA або мобільний застосунок і сховати секрет ніде.
2. Вкажіть бібліотеці URL постачальника
https://id.millida.net
Цього достатньо: бібліотека сама прочитає https://id.millida.net/.well-known/openid-configuration і знайде решту URL.
3. Надішліть людину на вхід
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 обов'язковий для всіх, зокрема для серверних застосунків. Збережіть state у сесії та перевірте його під час повернення — без цього ворожу відповідь можна підкинути у вашу сесію.
4. Обміняйте код на токени
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=…
Відповідь містить access_token, id_token і, якщо ви запросили offline_access, refresh_token.
5. Дізнайтеся, хто увійшов
Розберіть id_token (перевірте підпис за JWKS, iss, aud, exp, nonce) або запитайте:
GET https://id.millida.net/oauth/userinfo
Authorization: Bearer <access_token>
Які дані можна запросити
| Що ви запрошуєте | Що отримуєте |
|---|---|
openid | sub — ідентифікатор користувача, обов'язковий |
profile | нікнейм, ім'я, аватар, посилання на профіль |
email | адреса email і чи підтверджена вона |
minecraft | нікнейм Minecraft, його UUID, видання та посилання на поточний скін і плащ |
discord | ідентифікатор і ім'я прив'язаного Discord |
telegram | ідентифікатор і @name прив'язаного Telegram |
reputation | лайки профілю, кількість досягнень, дата реєстрації, позначка підтвердженого акаунта |
offline_access | право оновлювати доступ, доки людина його не відкличе |
В офлайн-нікнейма немає UUID — minecraft_uuid буде порожнім, а minecraft_username заповниться з акаунта. telegram_id надходить як рядок: id чату Telegram не вміщується в точне число JSON, і розбір його як числа псує останні цифри.
Запрошуйте лише те, що потрібне для роботи входу: людина читає кожен зайвий пункт на екрані згоди й може передумати просто там.
Про ідентифікатор користувача
sub різний для кожного застосунку в однієї й тієї самої людини. Він незмінний для вашого сайту, але не збігається з sub на інших сайтах — зіставити аудиторії між застосунками за ним не можна.
Зберігайте sub як ключ користувача. Email для цього не підходить: його можна змінити.
Перевірка застосунку
Новий застосунок працює одразу, але на екрані входу він позначений як неперевірений. Коли сайт буде готовий, натисніть «Надіслати на перевірку» в панелі — ми подивимося й знімемо позначку.
Поширені помилки
«redirect_uri does not match any registered address» — адреса зіставляється як повний рядок. Перевірте слеш у кінці, схему та порт.
«Only code_challenge_method=S256 is supported» — PKCE обов'язковий, plain не приймається.
«The authorization code has already been used» — код одноразовий і живе хвилину. Повторний обмін вважається ознакою витоку й повністю відкликає доступ застосунку.
Токен перестав працювати після відкликання — людина вимкнула застосунок у налаштуваннях безпеки профілю. Це очікувана поведінка: надішліть її на вхід знову.
Як людина відкликає доступ
Профіль → Безпека → «Під'єднані застосунки» → «Відкликати». Доступ припиняється негайно, і всі видані токени стають недійсними.