Не передан идентификатор приложения в параметре client id
Mail.Ru API
Вы можете подключить авторизацию от Mail.Ru к любому сайту. Вы можете использовать полученный идентификатор сессии для регистрации или логина пользователя на вашем сайте, а также для доступа к REST API Mail.Ru.
Если вы разрабатываете социальное приложение для Моего Мира, то вам не нужна авторизация с OAuth, так как все параметры, в том числе идентификатор сессии, приходят в приложение при инициализации. Подробности см. в руководстве по разработке социальных приложений.
Обзор процесса авторизации сайта
Авторизация реализована по протоколу OAuth 2.0. Подробнее о деталях реализации OAuth в Mail.Ru и использовании его для доступа к API читайте в руководстве по авторизации.
Для запуска процесса направьте пользователя на страницу авторизации, задав адрес страницы на вашем сайте, на которую пользователь будет направлен после авторизации.
Когда пользователь авторизует ваш сайт, его браузер будет отправлен на заданный вами адрес. Используйте параметры в URL страницы чтобы получить идентификатор сессии.
Детальное описание процесса авторизации
Для начала, зарегистрируйте ваш сайт. При регистрации вам будет выдан идентификатор, приватный и секретный ключи.
В нужный момент, сделайте редирект на страницу авторизации. Например, вы можете сделать кнопку «Войти с Mail.Ru» на страницах регистрации или логина, по нажатию на которую будет происходить перенаправление. Адрес страницы авторизации:
В значении параметра redirect_uri передайте адрес страницы, на которую будет происходить перенаправление пользователя после авторизации. Эта страница должна находиться на домене вашего сайта.
В качестве значений параметра response_type вы можете указать одно любое значение из списка (какое значение следует выбрать зависит от того, что вы будете делать с полученными параметрами):
Используйте необязательный параметр scope чтобы запросить у пользователя требующиеся вашему сайту привилегии. Если требуется запросить несколько привилегий, они передаются в scope через пробел.
После авторизации пользователь будет перенаправлен на страницу, указанную вами в redirect_uri, например, http://example.com/oauth/receiver.
Если вы указали response_type=token
После авторизации браузер будет перенаправлен на адрес следующего вида:
На вашей принимающей странице должен быть ваш JavaScript, который при открыти страницы разберет содержимое якоря (части после символа #): оно представлено в формате application/x-www-form-urlencoded.
Значение access_token — это идентификатор сессии, необходимый для работы с REST API.
В параметре refresh_token содержится ключ, который вы можете использовать для восстановления сессии при последующих заходах пользователя в ваше приложение. Подробности см. в руководстве по авторизации с помощью логина и пароля.
Если вы указали response_type=code_and_token
Этот вариант аналогичен предыдущему, за исключением того, что к возвращаемым параметрам добавляется code, например, так:
Обработайте параметры аналогично варианту с response_type=token и отправьте значение code на сервер для получения отдельной сессии для использования REST API с сервера вашего сайта (подробности см. ниже).
Если вы указали response_type=code
В этом случае результат авторизации выозвращается в виде GET-параметров, чтобы вы сразу имели к ним доступ с сервера, например, так:
Обменяйте полученный авторизационный код на идентификатор сессии, который вы сможете использовать для доступа к REST API. Для этого с сервера сделайте следующий POST-вызов на адрес https://connect.mail.ru/oauth/token:
В теле POST-запроса должны находиться данные в формате application/x-www-form-urlencoded (все указанные параметры обязательны):
В ответ на этот запрос вы получите примерно такой результат:
Значение access_token — это идентификатор сессии, необходимый для работы с REST API.
В параметре refresh_token содержится ключ, который вы можете использовать для восстановления сессии при последующих заходах пользователя в ваше приложение. Подробности см. в руководстве по авторизации с помощью логина и пароля.
Дополнительно
В случае возникновения ошибок в процессе авторизации, браузер также будет перенаправлен на указанный redirect_uri, с указанием причины ошибки в параметре error. См. подробности в разделе Error Response спецификации OAuth.
Важное замечание по безопасности
Если вы привязываете авторизацию на Mail.Ru к авторизации на вашем сайте, используйте для каждого пользователя уникальный redirect_uri. Иначе становится возможной следующая атака:
Использование уникальных redirect_uri для каждого пользователя предотвращает такую атаку, так как при обмене авторизационного кода на сессию требуется указать redirect_uri с которым был получен авторизационный код, а они для злоумышленника и жертвы будут разные. Естественно, это сработает если при обмене авторизационного кода вы вычислите redirect_uri текущего пользователя, а не просто возьмете тот, по которому он только что пришел.
Настройка авторизации через Mail.ru
Как настроить авторизацию посетителей сайта через Mail.ru в личном кабинете и для оформления заказа
Если у вас несколько сайтов, то авторизацию нужно настроить отдельно для каждого сайта.
Если авторизация для этого сайта уже включена, перейдите по ссылке «Настройки авторизации».
6 комментариев
Добрый день, устанавливаю всё по инструкции не удаётся войти через mail.ru ловлю ошибку :
” Не указано приложение Не передан идентификатор приложения в параметре client_id “.
Возможно, вы не заполнили поле “ID” в настройках авторизации через Mail.ru.
Заполнил 3 поля которые были полученны при регистрации в mail.ru
Посмотрите, какие сообщения об ошибках появляются в PHP-логе и в консоли браузера в момент возникновения проблемы.
Настроила по инструкции. Два сайта нормально работают, а третий выдает
Магазин
Обратитесь к разработчику приложения.
По рекомендации к предыдущему комментарию (консоль браузера) получила
Сценарий из «https://my1.imgsmail.ru/mail/ru/images/js/my/infotolltip.js?8» был загружен, хотя его MIME-тип («text/html») не является допустимым для JavaScript
Возможно, в теме дизайна вы добавили вызов файла с адресом
По этому адресу ничего нет: ошибка 404. Но, возможно, это никак не связано с работой авторизации.
Важнее посмотреть, почему возникает ошибка 500. Как это сделать.
OAuth 2.0 Авторизация¶
Получение кода авторизации¶
| Название | Значение | Описание |
|---|---|---|
| response_type | code | Тип получения доступа. |
| client_id | Уникальный идентификатор клиента. | |
| redirect_uri | Адрес, на который сервер авторизации перенаправляет пользователя после успешной авторизации (посылает ответ). Должен в точности сопадать с тем, который был зарегистрирован (включая схему http или https, а также символ ‘/’ на правом конце). Чтобы зарегистрировать адрес, необходимо обратиться в службу поддержки. | |
| scope | biz.api userinfo | Область действия токена. Допустимо указание нескольких scope через пробельный символ. |
| state | Любая строка | Сервер авторизации добавляет этот параметр с указанным значением к адресу redirect_uri, на который будет перенаправлен пользователь. Для предотвращения CSRF-атак необходимо сохранять случайное значение state в сессии или куке и проверять его при возврате на redirect_uri. |
Пример¶
Ответ¶
Пользователь успешно прошел авторизацию
В случае успешного прохождения авторизации пользователь будет перенаправлен на адрес следующего вида:
Пример
После нажатия на кнопку “отмена” пользователь будет перенаправлен на адрес следующего вида:
Пример
Поля
| Название | Описание |
|---|---|
| code | Код авторизации, по которому может быть получен в дальнейшем токен для доступа. Время жизни кода авторизации 5 минут. |
| state | Соответствует значению указанному в параметре state в запросе. |
Ошибка при получении кода авторизации
Получение токена¶
| Название | Значение | Описание |
|---|---|---|
| grant_type | authorization_code | Тип получения токена. |
| code | Авторизационный код. | |
| redirect_uri | Адрес, на который сервер авторизации перенаправляет пользователя после успешной авторизации. Должен совпадать с тем, который был указан при получении соответствующего кода авторизации (включая схему http или https, а также символ ‘/’ на правом конце). |
Необходимо указать значения параметров client_id и client_secret в параметрах запроса или Authorization-заголовке (Базовая HTTP-авторизация).
Пример¶
Ответ¶
Токен успешно получен
Поля





