Вход через Millida на своём сайте
Подключите кнопку «Войти через Millida» — вход по аккаунту Millida для посетителей вашего сайта. Регистрация приложения, поток авторизации, проверка токена.
Обновлено 7 сентября 2026 г.
Millida умеет быть провайдером входа: посетитель нажимает у вас на сайте «Войти через Millida», подтверждает передачу данных и возвращается уже авторизованным. Работает по OpenID Connect — так же, как вход через Google, Apple или Discord, поэтому подойдёт любая готовая библиотека OIDC.
Наружу уходит только идентичность: ник Minecraft, имя, аватар, а при вашем запросе и согласии человека — почта, скин, привязанные Discord и Telegram, репутация на площадке. Ни балансы, ни сделки, ни серверы приложениям недоступны.
Что нужно сделать
1. Завести приложение
Профиль → API и вебхуки → вкладка Вход через Millida → «Создать приложение».
Понадобится:
- Название — его увидит человек на экране входа. Слово «Millida» в названии чужого приложения запрещено.
- Адрес возврата — куда вернуть пользователя после подтверждения. Только
https(для разработки можноhttp://localhost). Сверяется целиком: лишний слэш или дописанный параметр уже не подойдут. - Ссылка на политику конфиденциальности — человек увидит её перед тем, как передать вам данные.
После создания вы получите client_id и, для серверного приложения,
client_secret. Секрет показывается один раз — сохраните его сразу.
Тип приложения: серверное, если у вас есть бэкенд, который сохранит секрет; публичное, если это SPA или мобильное приложение и прятать секрет негде.
2. Указать библиотеке адрес провайдера
https://id.millida.net
Этого хватает: библиотека сама прочитает
https://id.millida.net/.well-known/openid-configuration и найдёт остальные
адреса.
3. Отправить человека на вход
https://id.millida.net/oauth/authorize
?response_type=code
&client_id=ваш_client_id
&redirect_uri=https://ваш-сайт.ру/auth/millida/callback
&scope=openid profile email
&state=случайная_строка
&nonce=случайная_строка
&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 | адрес почты и признак, подтверждён ли он |
minecraft | ник Minecraft, его UUID, издание и ссылки на текущий скин и плащ |
discord | идентификатор и имя привязанного Discord |
telegram | идентификатор и @имя привязанного Telegram |
reputation | лайки профиля, число достижений, дата регистрации, отметка проверенного аккаунта |
offline_access | право обновлять доступ, пока человек не отзовёт его |
У оффлайн-ника UUID не существует — minecraft_uuid придёт пустым, а
minecraft_username подставится с аккаунта. telegram_id приходит строкой:
chat id Telegram не помещается в точное число JSON, и разбор его как числа
портит последние цифры.
Просите только то, без чего вход не работает: каждый лишний пункт человек читает на экране согласия и на нём же может передумать.
Про идентификатор пользователя
sub у каждого приложения свой для одного и того же человека. Он неизменен
для вашего сайта, но не совпадает с sub у других сайтов — сопоставить
аудитории между приложениями по нему нельзя.
Храните sub как ключ пользователя. Почта для этого не годится: её меняют.
Проверка приложения
Новое приложение работает сразу, но на экране входа помечено как непроверенное. Когда сайт готов, нажмите «На проверку» в кабинете — мы посмотрим и снимем плашку.
Частые ошибки
«redirect_uri не совпадает ни с одним зарегистрированным адресом» — адрес сверяется строкой целиком. Проверьте слэш в конце, схему и порт.
«Поддерживается только code_challenge_method=S256» — PKCE обязателен, plain
не принимается.
«Код авторизации уже был использован» — код одноразовый и живёт минуту. Повторный обмен считается признаком утечки и отзывает доступ приложения целиком.
Токен перестал работать после отзыва — человек отключил приложение в настройках безопасности профиля. Это штатное поведение: отправьте его на вход заново.
Как человек отзывает доступ
Профиль → Безопасность → «Подключённые приложения» → «Отозвать». Доступ прекращается сразу, все выданные токены гаснут.