Авторизация по логину и паролю

Платформа@Mail.Ru предоставляет возможность приложениям авторизовывать пользователей по их логину и паролю на Mail.Ru. Авторизация по логину и паролю сделана для тех приложений, которые по техническим причинам не могут реализовать другие способы авторизации.

Возможность авторизации по логину и паролю подключается модератором для кажого приложения отдельно. Вы можете послать запрос на адрес app@corp.mail.ru с указанием app_id вашего приложения и почему вы не можете использовать стандартную авторизацию для standalone-приложений. Подавляющее большинство приложений под Windows, MacOS, Linux, iOS и Android может использовать авторизацию для standalone-приложений, кроме того, это стандартный способ авторизации во многих социальных сетях. Поэтому мы разрешаем авторизацию по логину и паролю лишь в исключительных случаях. Не рекомендуем начинать разработку авторизации по логину и паролю без получения подтверждения от нас, что такая авторизация будет разрешена.

Авторизация по логину и паролю предназначена только для native приложений. Поэтому перед подачей заявки ваше приложение должно быть размещено в контексте «Внешние приложения». Это можно сделать в закладке «Публикация» настроек приложения.

Получение сессии приложений

Для получения сессии приложение должно сделать POST-запрос на адрес https://appsmail.ru/oauth/token. Например:

> POST /oauth/token HTTP/1.1
> Host: appsmail.ru
> Content-Type: application/x-www-form-urlencoded
>
> grant_type=password&client_id=123&client_secret=234&
  username=test@mail.ru&password=qwerty&scope=widget

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

В случае, если все параметры указаны правильно, сервер возвращает сессию (access_token) и вспомогательные параметры:

{
  "refresh_token":"e3a8a0a432bae164fb164e6c357fc0c6",
  "expires_in":86400,
  "x_mailru_vid":"16645288773925549681",
  "access_token":"1e6db8c123b90797aa745afe160e9e95"
}

Формат сообщений об ошибках

Сообщения об ошибках содержат параметр error, содержащий код ошибки в соответствии с разделом 4.3.1 спецификации OAuth 2.0.

Использование refresh_token

Приложениям запрещается сохранять пароль пользователя. Для того, чтобы обеспечить повторное получение сессии без запроса пароля, используется механизм refresh_token. При успешной авторизации с помощью логина и пароля пользователя сервер возвращает значение refresh_token, которое можно сохранить на клиенте и использовать при последующих запусках программы вместо логина и пароля для получения новой сессии.

> POST /oauth/token HTTP/1.1
> Host: appsmail.ru
> Content-Type: application/x-www-formurlencoded
> 
> grant_type=refresh_token&
  client_id=123&
  refresh_token=e3a8a0a432bae164fb164e6c357fc0c6&
  client_secret=000ff8627d2d79b60ebdaf004f9a68aa

< HTTP/1.1 200 OK
< Content-Type: application/json
<
< {"refresh_token":"e3a8a0a432bae164fb164e6c357fc0c6",
   "expires_in":86400,
   "x_mailru_vid":"16645288773925549681",
   "access_token":"1e6db8c123b90797aa745afe160e9e95"}

Как видно из примера, ответ за запрос с использованием refresh_token‘а возвращается такого же вида, как и при авторизации с помощью логина и пароля.

Дополнительно