Обмен токена на информацию о пользователе

По запросу информации о пользователе API Яндекс ID возвращает все данные, права на которые дает указанный в запросе OAuth-токен.

Состав ответа сервиса зависит от прав приложения, выбранных при регистрации на Яндекс OAuth. Если выбрано несколько прав, ответ составляется из элементов, специфических для каждого из прав.

Примечание

Для запроса к API Яндекс ID можно использовать OAuth-токен с правами доступа к любому из сервисов Яндекса. Однако расширенный доступ к данным пользователя дают только токены с правами доступа из секции API Яндекс ID, настроенные при регистрации приложения.

Формат запроса

Запрос информации о пользователе Яндекса формируется следующим образом:

GET https://login.yandex.ru/info?
[& format=json | xml | jwt]
[& jwt_secret=<секретный ключ>]

Authorization: OAuth <OAuth-токен>
GET https://login.yandex.ru/info?
 & oauth_token=<OAuth-токен>
[& format=json | xml | jwt]
[& jwt_secret=<секретный ключ>]

Внимание

При использовании этого способа OAuth-токен передается в параметре GET-запроса и может сохраниться в открытом виде в истории браузера или в access-логах любого промежуточного хоста. Сохраненным OAuth-токеном может воспользоваться злоумышленник.

Параметры запроса

Параметр

Значение

Описание

oauth_token

<OAuth-токен>

OAuth-токен, который разрешает доступ к данным учетной записи пользователя через API Яндекс ID. От прав, которые дает указанный в запросе OAuth-токен, зависит содержание ответа.

OAuth-токен должен быть указан в запросе одним из двух способов:

  • В HTTP-заголовке Authorization при каждом вызове API Яндекс ID с указанием типа токена перед его значением (рекомендуемый способ):

    Authorization: OAuth <OAuth-токен>
    
  • В значении параметра oauth_token (небезопасный способ):

    oauth_token=<OAuth-токен>
    

format

xml | json | jwt

Формат возвращаемых данных. Возможные значения:

  • json — JSON-документ. Это значение используется по умолчанию, если параметр не указан в запросе.
  • xml — XML-документ.
  • jwt — JSON Web Token.

jwt_secret

<секретный ключ>

Секрет, которым будет подписан JWT. Если параметр не передан, вместо него будет использован client_secret OAuth-приложения.
Рекомендуется этот параметр не передавать.

Формат ответа

В ответе сервиса возвращается набор стандартных и дополнительных полей в зависимости от прав приложения.

Формат тела ответа по умолчанию — JSON. Вы также можете получить ответ в формате XML или JWT: для этого укажите в запросе параметр format со значением xml или jwt:

  • Ответ в формате XML имеет такую же структуру, как и JSON. При этом данные обрамляются корневым тегом <user>.
  • Ответ в формате JWT всегда имеет стандартный набор полей. В зависимости от выбранных прав, помимо стандартных полей, возвращаются и специальные поля.

Стандартные параметры ответа

Ответ на запрос информации о пользователе содержит набор полей, перечисленных ниже:

Свойство

Описание

login

Логин пользователя на Яндексе.

id

Уникальный идентификатор пользователя Яндекса.

client_id

Идентификатор приложения, для которого был выдан переданный в запросе OAuth-токен. Доступен в свойствах приложения. Чтобы открыть свойства, нажмите на название приложения.

uid

Аналог id. Поле доступно только в формате JWT.

psuid

Идентификатор авторизованного пользователя в Яндексе. Формируется на стороне Яндекса на основе пары client_id и user_id.

Дополнительные параметры ответа

Дополнительные поля ответа зависят от прав, выбранных при регистрации приложения на Яндекс OAuth и предоставленных OAuth-токеном:

Если выбрано несколько прав, ответ составляется из элементов, специфических для каждого из прав.

Отсутствие прав из секции API Яндекс ID

Запрос к API Яндекс ID можно составить, используя OAuth-токен, выданный для другого сервиса Яндекса. Если токен валиден, API возвращает следующий ответ:

{
   "login": "ivan",
   "id": "1000034426",
   "client_id": "4760187d81bc4b7799476b42b5103713",
   "psuid": "1.AAceCw.tbHgw5DtJ9_zeqPrk-Ba2w.qPWSRC5v2t2IaksPJgnge"
}
<?xml version="1.0" encoding="utf-8"?>
<user>
  <login>ivan</login>
  <id>1000034426</id>
  <client_id>4760187d81bc4b7799476b42b5103713</client_id>
  <psuid>1.AAceCw.tbHgw5DtJ9_zeqPrk-Ba2w.qPWSRC5v2t2IaksPJgnge</psuid>
</user>
{
   "iat": 1620915565,
   "jti": "384b6169-b3f6-11eb-a7cd-0c42a10aa38c",
   "exp": 1652451414,
   "iss": "login.yandex.ru",
   "uid": 1000034426,
   "login": "ivan",
   "psuid": "1.AAceCw.tbHgw5DtJ9_zeqPrk-Ba2w.qPWSRC5v2t2IaksPJgnge"
}

Ответ содержит стандартный набор полей.

Доступ к адресу электронной почты

При запросе с OAuth-токеном, дающим право Адрес электронной почты, API возвращает следующий ответ:

{
   "login": "ivan",
   "old_social_login": "uid-mmzxrnry",
   "default_email": "test@yandex.ru",
   "id": "1000034426",
   "client_id": "4760187d81bc4b7799476b42b5103713",
   "emails": [
      "test@yandex.ru",
      "other-test@yandex.ru"
   ],
   "psuid": "1.AAceCw.tbHgw5DtJ9_zeqPrk-Ba2w.qPWSRC5v2t2IaksPJgnge"
}
<?xml version="1.0" encoding="utf-8"?>
<user>
  <login>ivan</login>
  <old_social_login>uid-mmzxrnry</old_social_login>
  <default_email>test@yandex.ru</default_email>
  <id>1000034426</id>
  <client_id>4760187d81bc4b7799476b42b5103713</client_id>
  <emails>
    <address>test@yandex.ru</address>
    <address>other-test@yandex.ru</address>
  </emails>
  <psuid>1.AAceCw.tbHgw5DtJ9_zeqPrk-Ba2w.qPWSRC5v2t2IaksPJgnge</psuid>
</user>
{
   "iat": 1620915565,
   "jti": "384b6169-b3f6-11eb-a7cd-0c42a10aa38c",
   "exp": 1652451414,
   "iss": "login.yandex.ru",
   "uid": 1000034426,
   "login": "ivan",
   "email": "test@yandex.ru",
   "psuid": "1.AAceCw.tbHgw5DtJ9_zeqPrk-Ba2w.qPWSRC5v2t2IaksPJgnge"
}        

Ответ содержит стандартный набор полей, а также дополнительные параметры:

Свойство

Описание

emails

Массив электронных адресов пользователя. В настоящее время включает единственный e-mail — e-mail по умолчанию.

default_email

E-mail по умолчанию, предназначенный для связи с пользователем.

email

Аналог default_email. Поле доступно только в формате JWT.

Доступ к портрету пользователя

При запросе с OAuth-токеном, дающим право Портрет пользователя, API возвращает следующий ответ:

{
   "login": "ivan",
   "old_social_login": "uid-mmzxrnry",
   "id": "1000034426",
   "client_id": "4760187d81bc4b7799476b42b5103713",
   "is_avatar_empty": false,
   "default_avatar_id": "131652443",
   "psuid": "1.AAceCw.tbHgw5DtJ9_zeqPrk-Ba2w.qPWSRC5v2t2IaksPJgnge"
}
<?xml version="1.0" encoding="utf-8"?>
<user>
  <login>zamulla.aleksey</login>
  <old_social_login>uid-mmzxrnry</old_social_login>
  <id>31652443</id>
  <client_id>4760187d81bc4b7799476b42b5103713</client_id>
  <is_avatar_empty>False</is_avatar_empty>
  <default_avatar_id>31652443</default_avatar_id>
  <psuid>1.AAceCw.tbHgw5DtJ9_zeqPrk-Ba2w.qPWSRC5v2t2IaksPJgnge</psuid>
</user>
{
   "iat": 1620915565,
   "jti": "384b6169-b3f6-11eb-a7cd-0c42a10aa38c",
   "exp": 1652451414,
   "iss": "login.yandex.ru",
   "uid": 1000034426,
   "login": "ivan",
   "avatar_id": "131652443",
   "psuid": "1.AAceCw.tbHgw5DtJ9_zeqPrk-Ba2w.qPWSRC5v2t2IaksPJgnge"
}     

Ответ содержит стандартный набор полей, а также дополнительные параметры:

Свойство

Описание

is_avatar_empty

Признак того, что в поле default_avatar_id указан идентификатор заглушки (портрета, который автоматически назначается при регистрации на Яндексе).

default_avatar_id

Идентификатор портрета пользователя Яндекса.
Портрет с данным идентификатором можно скачать по ссылке следующего формата:

https://avatars.yandex.net/get-yapic/<идентификатор портрета>/<размер>

Если портрета с переданным идентификатором нет, по ссылке будет заглушка указанного размера.

Доступные размеры

Чтобы получить изображение нужного размера, Яндекс пытается найти на портрете лицо и вырезает изображение из этой области.

Значения, которые можно задать в URL портрета:

  • islands-small — 28×28 пикселей.
  • islands-34 — 34×34 пикселей.
  • islands-middle — 42×42 пикселей.
  • islands-50 — 50×50 пикселей.
  • islands-retina-small — 56×56 пикселей.
  • islands-68 — 68×68 пикселей.
  • islands-75 — 75×75 пикселей.
  • islands-retina-middle — 84×84 пикселей.
  • islands-retina-50 — 100×100 пикселей.
  • islands-200 — 200×200 пикселей.

avatar_id

Аналог default_avatar_id. Поле доступно только в формате JWT.

Доступ к дате рождения

При запросе с OAuth-токеном, дающим право Дата рождения, API возвращает следующий ответ:

{
   "login": "ivan",
   "old_social_login": "uid-mmzxrnry",
   "birthday": "1987-03-12",
   "id": "1000034426",
   "client_id": "4760187d81bc4b7799476b42b5103713",
   "psuid": "1.AAceCw.tbHgw5DtJ9_zeqPrk-Ba2w.qPWSRC5v2t2IaksPJgnge"
}
<?xml version="1.0" encoding="utf-8"?>
<user>
  <login>ivan</login>
  <old_social_login>uid-mmzxrnry</old_social_login>
  <birthday>1987-03-12</birthday>
  <id>1000034426</id>
  <client_id>4760187d81bc4b7799476b42b5103713</client_id>
  <psuid>1.AAceCw.tbHgw5DtJ9_zeqPrk-Ba2w.qPWSRC5v2t2IaksPJgnge</psuid>
</user>
{
   "iat": 1620915565,
   "jti": "384b6169-b3f6-11eb-a7cd-0c42a10aa38c",
   "exp": 1652451414,
   "iss": "login.yandex.ru",
   "uid": 1000034426,
   "login": "ivan",
   "birthday": "1987-03-12",
   "psuid": "1.AAceCw.tbHgw5DtJ9_zeqPrk-Ba2w.qPWSRC5v2t2IaksPJgnge"
}    

Ответ содержит стандартный набор полей, а также дополнительный параметр:

Свойство

Описание

birthday

Дата рождения пользователя в формате ГГГГ-ММ-ДД.

Неизвестные части даты заполняются нулями, например: 0000-12-23.

Если дата рождения пользователя неизвестна:

  • в JSON-документе возвращается ключ "birthday": null;
  • в XML-документе возвращается пустой тег <birthday/>.

Доступ к логину, имени и фамилии, полу

При запросе с OAuth-токеном, дающим право Логин, имя и фамилия, пол, API возвращает следующий ответ:

{
   "first_name": "Иван",
   "last_name": "Иванов",
   "display_name": "Ivan",
   "real_name": "Иван Иванов",
   "login": "ivan",
   "old_social_login": "uid-mmzxrnry",
   "sex": "male",
   "id": "1000034426",
   "client_id": "4760187d81bc4b7799476b42b5103713",
   "psuid": "1.AAceCw.tbHgw5DtJ9_zeqPrk-Ba2w.qPWSRC5v2t2IaksPJgnge"
}
<?xml version="1.0" encoding="utf-8"?>
<user>
  <first_name>Иван</first_name>
  <last_name></last_name>
  <display_name>Ivan</display_name>
  <real_name>Иван Иванов</real_name>
  <login>ivan</login>
  <old_social_login>uid-mmzxrnry</old_social_login>
  <sex>male</sex>
  <id>1000034426</id>
  <client_id>4760187d81bc4b7799476b42b5103713</client_id>
  <psuid>1.AAceCw.tbHgw5DtJ9_zeqPrk-Ba2w.qPWSRC5v2t2IaksPJgnge</psuid>
</user>
{
   "iat": 1620915565,
   "jti": "384b6169-b3f6-11eb-a7cd-0c42a10aa38c",
   "exp": 1652451414,
   "iss": "login.yandex.ru",
   "login": "ivan",
   "uid": 1000034426,
   "display_name": "Ivan",
   "name": "Иван Иванов",
   "gender": "male",
   "psuid": "1.AAceCw.tbHgw5DtJ9_zeqPrk-Ba2w.qPWSRC5v2t2IaksPJgnge"
}        

Ответ содержит стандартный набор полей, а также дополнительные параметры:

Свойство

Описание

first_name

Имя пользователя, указанное им в Яндекс ID.

last_name

Фамилия пользователя, указанная им в Яндекс ID.

display_name

Имя, которое отображается для данной учетной записи в интерфейсе Яндекса.

real_name

Имя и фамилия пользователя, указанные им в Яндекс ID.
В формате JSON нелатинские символы имени и фамилии представлены в формате Unicode.

sex

Пол пользователя. Возможные значения:

  • male — мужской;
  • female — женский;
  • неизвестный пол:
    • в JSON-документе обозначается ключом "sex": null;
    • в XML-документе обозначается пустым тегом <sex/>.

gender

Аналог sex. Поле доступно только в формате JWT.

Доступ к номеру телефона

При запросе с OAuth-токеном, дающим право Номер телефона, API возвращает следующий ответ:

{
   "login": "ivan",
   "id": "1000034426",
   "client_id": "4760187d81bc4b7799476b42b5103713",
   "default_phone": {
      "id": 12345678,
      "number": "+79037659418"
   },
   "psuid": "1.AAceCw.tbHgw5DtJ9_zeqPrk-Ba2w.qPWSRC5v2t2IaksPJgnge"
}
<?xml version="1.0" encoding="utf-8"?>
<user>
  <login>ivan</login>
  <id>1000034426</id>
  <client_id>4760187d81bc4b7799476b42b5103713</id>
  <psuid>1.AAceCw.tbHgw5DtJ9_zeqPrk-Ba2w.qPWSRC5v2t2IaksPJgnge</psuid>
  <default_phone>
    <id>12345678</id>
    <number>+79037659418</number>
  </default_phone>
</user>
{
   "iat": 1620915565,
   "jti": "384b6169-b3f6-11eb-a7cd-0c42a10aa38c",
   "exp": 1652451414,
   "iss": "login.yandex.ru",
   "uid": 1000034426,
   "login": "ivan",
   "number": "+79037659418",
   "psuid": "1.AAceCw.tbHgw5DtJ9_zeqPrk-Ba2w.qPWSRC5v2t2IaksPJgnge"
}        

Ответ содержит стандартный набор полей, а также дополнительные параметры:

Свойство

Описание

default_phone

Телефон по умолчанию, предназначенный для связи с пользователем. Поле содержит параметры:

  • id — идентификатор номера телефона;
  • number — номер телефона пользователя.

Пример

Если приложение имеет OAuth-токен, который дает приложению все права API Яндекс ID, ответ содержит все стандартные и дополнительные параметры:

{
   "first_name": "Иван",
   "last_name": "Иванов",
   "display_name": "ivan",
   "emails": [
      "test@yandex.ru",
      "other-test@yandex.ru"
   ],
   "default_email": "test@yandex.ru",
   "default_phone": {
      "id": 12345678,
      "number": "+79037659418"
   },
   "real_name": "Иван Иванов",
   "is_avatar_empty": false,
   "birthday": "1987-03-12",
   "default_avatar_id": "131652443",
   "login": "ivan",
   "old_social_login": "uid-mmzxrnry",
   "sex": "male",
   "id": "1000034426",
   "client_id": "4760187d81bc4b7799476b42b5103713",
   "psuid": "1.AAceCw.tbHgw5DtJ9_zeqPrk-Ba2w.qPWSRC5v2t2IaksPJgnge"
}
<?xml version="1.0" encoding="utf-8"?>
<user>
   <first_name>Иван</first_name>
   <last_name>Иванов</last_name>
   <display_name>ivan</display_name>
   <emails>
      <address>test@yandex.ru</address>
      <address>other-test@yandex.ru</address>
   </emails>
   <default_email>test@yandex.ru</default_email>
   <default_phone>
      <id>12345678</id>
      <number>+79037659418</number>
   </default_phone>
   <real_name>Иван Иванов</real_name>
   <is_avatar_empty>False</is_avatar_empty>
   <birthday>1987-03-12</birthday>
   <default_avatar_id>131652443</default_avatar_id>
   <login>ivan</login>
   <old_social_login>uid-mmzxrnry</old_social_login>
   <sex>male</sex>
   <id>1000034426</id>
   <client_id>4760187d81bc4b7799476b42b5103713</client_id>
   <psuid>1.AAceCw.tbHgw5DtJ9_zeqPrk-Ba2w.qPWSRC5v2t2IaksPJgnge</psuid>
</user>
{
   "iat": 1620915565,
   "jti": "384b6169-b3f6-11eb-a7cd-0c42a10aa38c",
   "exp": 1652451414,
   "iss": "login.yandex.ru",
   "uid": 1000034426,
   "login": "ivan",
   "avatar_id": "131652443",
   "email": "test@yandex.ru",
   "number": "+79037659418",
   "display_name": "ivan",
   "name": "Иван Иванов",
   "gender": "male",
   "psuid": "1.AAceCw.tbHgw5DtJ9_zeqPrk-Ba2w.qPWSRC5v2t2IaksPJgnge"
}