Подключение авторизации

На Турбо-страницах появилась возможность авторизации и выхода пользователя. Кнопка авторизации находится в меню. Авторизация необходима, чтобы пользователь мог добавить новый комментарий. Неавторизованные пользователи комментарии оставлять не могут. Подробнее о комментариях см. в разделе подключение комментариев.

Ниже описаны этапы подключения авторизации:

  1. Шаг 1. Создайте HTML-страницу с формой входа
  2. Шаг 2. Создайте ресурс, который проверяет авторизацию
  3. Шаг 3. Создайте ресурс, который совершает выход
  4. Шаг 4. Подключите авторизацию

Шаг 1. Создайте HTML-страницу с формой входа

Как работает

Когда пользователь нажимает кнопку Войти, на Турбо-странице открывается ваша HTML-страница с формой входа. В нее передается идентификатор пользователя в query-параметре TURBO_ID. При успешной авторизации его можно связать с авторизованным пользователем.

Примечание. Для авторизации можно использовать Cookie. Но некоторые браузеры могут не отправлять Сookie. В таких случаях нужно использовать TURBO_ID.

Пример запроса, который отправляет Турбо-страница:

GET https://my-domain.ru/api/login?TURBO_ID={id}

TURBO_ID — уникальный идентификатор пользователя в системе Яндекс.Турбо. TURBO_ID сохраняется за пользователем долгое время. Но если пользователь заходит в режиме инкогнито, то идентификатор может быть потерян.

Что надо сделать
Создайте HTML-страницу с формой входа и регистрации, например, https://my-domain.ru/api/login. Для нее необходимо разрешить открытие на домене yandex.{ru, br, fr, tr, com.tr}.

Если вход произошел успешно, страница должна отправить сообщение:

window.parent.postMessage({
  action: 'login',
  login: userLogin,
  success: true
}, '*');

Пример HTML-страницы доступен на GitHub.

Шаг 2. Создайте ресурс, который проверяет авторизацию

Примечание. Чтобы Турбо-страницы могли взаимодействовать с API авторизации, разрешите Cross-Origin запросы для *.yandex.*, *.turbopages.org.
Как работает

Когда пользователь заходит на Турбо-страницу, она отправляет GET-запрос на ваш ресурс проверки авторизации. Уникальный идентификатор пользователя передается в query-параметре TURBO_ID. Ресурс обрабатывает запрос и возвращает результат проверки.

Пример запроса, который отправляет Турбо-страница:
CORS GET https://my-domain.ru/api/auth?TURBO_ID={TURBO_ID}

TURBO_ID — уникальный идентификатор пользователя в системе Яндекс.Турбо. TURBO_ID сохраняется за пользователем долгое время. Но если пользователь заходит в режиме инкогнито, то идентификатор может быть потерян.

Что надо сделать
Создайте ресурс, который обрабатывает запрос и проверяет авторизацию пользователя по TURBO_ID или Cookie и возвращает результат.
Примечание. Ресурс должен быть доступен по HTTPS-протоколу.
Ожидаемый ответ ресурса
Ресурс должен возвращать:
Если пользователь авторизован
Код HTTP-ответа: 200.
JSON:
{
    "login": "user@email.tld"
}
В ином случае
Код HTTP-ответа: 401.

Пример ресурса доступен на GitHub.

Шаг 3. Создайте ресурс, который совершает выход

Как работает
Когда пользователь нажимает кнопку Выйти, Турбо-страница отправляет GET-запрос на ваш ресурс выхода. В нем передается уникальный идентификатор пользователя, по которому ресурс должен выполнить выход.

Пример запроса, который отправляет Турбо-страница:

CORS GET https://my-domain.ru/api/logout?TURBO_ID={TURBO_ID}
TURBO_ID — уникальный идентификатор пользователя в системе Яндекс.Турбо. TURBO_ID сохраняется за пользователем долгое время. Но если пользователь заходит в режиме инкогнито, то идентификатор может быть потерян.
Что надо сделать
Создайте ресурс, в котором происходит выход пользователя по TURBO_ID или Cookie.

Пример ресурса доступен на GitHub.

Шаг 4. Подключите авторизацию

Чтобы подключить авторизацию:
  1. В Яндекс.Вебмастере перейдите на страницу Турбо-страницы → Настройки → Авторизация.
  2. Укажите ссылки на ресурсы:
    • URL страницы с формой входа, например, https://my-domain.ru/api/login;
    • URL проверки авторизации, например, https://my-domain.ru/api/auth;
    • URL для выхода, например, https://my-domain.ru/api/logout.
  3. Сохраните изменения.
  4. Проверьте работу авторизации в примере Турбо-страницы.