Перейти к содержимому
Разработчикам · Вход через Millida

Вход через 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>

Какие данные можно запросить

Что проситеЧто получаете
openidsub — идентификатор пользователя, обязателен
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 не принимается.

«Код авторизации уже был использован» — код одноразовый и живёт минуту. Повторный обмен считается признаком утечки и отзывает доступ приложения целиком.

Токен перестал работать после отзыва — человек отключил приложение в настройках безопасности профиля. Это штатное поведение: отправьте его на вход заново.

Как человек отзывает доступ

Профиль → Безопасность → «Подключённые приложения» → «Отозвать». Доступ прекращается сразу, все выданные токены гаснут.