16.05.2026 00:00

userinfo

[GET] /oauth/userinfo

Метод /oauth/userinfo возвращает публичные данные пользователя по действующему access_token. Обычно приложение вызывает этот метод после входа через Authorization Code Flow или после получения токена через Embed Token, когда нужно показать имя пользователя, email, телефон или другие данные профиля.

Запрос очень простой: передайте access_token в заголовке Authorization. В query string и body ничего добавлять не нужно.

curl -X GET https://auth.regos.uz/oauth/userinfo \
  -H "Authorization: Bearer eyJ...access_token"

Токен должен быть активным и должен содержать scope openid. Это базовое разрешение, без него метод не вернет данные пользователя. Остальные поля зависят от scope, которые были выданы приложению при входе пользователя. Если приложение запросило только openid, в ответе будет только идентификатор пользователя. Если дополнительно были запрошены profile, email, phone или roles, ответ станет шире.

Поле sub приходит всегда. Это публичный идентификатор пользователя для вашей интеграции. Его можно сохранить у себя, чтобы связать локальную учетную запись с пользователем REGOS.

Если был выдан scope email, в ответ добавляются email и email_verified. Поле email содержит адрес электронной почты, а email_verified показывает, подтвержден ли этот адрес.

Если был выдан scope phone, в ответ добавляются phone_number и phone_number_verified. Поле phone_number содержит номер телефона, а phone_number_verified показывает, подтвержден ли номер.

Scope profile открывает базовые данные профиля. Вместе с ним могут прийти given_name, family_name, company, picture, gender, birthdate, country_code, timezone, language_code и telegram_chat_id. Поле gender возвращается как публичное значение male или female. Если пользователь не указал пол, поле вернется пустой строкой. Поле birthdate возвращается в формате YYYY-MM-DD, например 1995-04-23. Если дата рождения не указана, поле также вернется пустой строкой.

Если был выдан scope roles, в ответ может добавиться roles. Это список публичных ролей пользователя, доступных вашему приложению. Если ролей нет, поле может отсутствовать.

Пример ответа при scopes openid profile email phone:

{
  "sub": "user_identifier",
  "email": "user@example.com",
  "email_verified": true,
  "phone_number": "+998901234567",
  "phone_number_verified": true,
  "given_name": "Ali",
  "family_name": "Valiyev",
  "company": "Example",
  "picture": "https://example.com/avatar.png",
  "gender": "male",
  "birthdate": "1995-04-23",
  "country_code": "UZ",
  "timezone": "Asia/Tashkent",
  "language_code": "ru",
  "telegram_chat_id": 123456789
}

Не делайте код зависимым от того, что все поля всегда заполнены. Пользователь может не указать часть профиля, а приложение может получить не все scope. Надежная интеграция сначала проверяет наличие поля и только потом показывает его в интерфейсе.

Если токен истек или был отозван, метод вернет ошибку авторизации. В этом случае сначала попробуйте обновить токен через refresh_token, а если обновление не удалось, отправьте пользователя на повторный вход.