Кросс-авторизация

Назначение метода

В popup’е SailPlay реализован механизм авторизации пользователя без ввода логина и пароля пользователем. Весь процесс выглядит следующим образом:

  1. Партнер делает запрос к методу получения информации о клиенте, либо к методу добавления клиента в системе SailPlay, в ответе возвращается параметр auth_hash.

  2. При генерации пользовательской страницы, необходимо подставить параметр authHash в JS-код SailPlay.

  3. При открытии popup’а пользователь будет автоматически авторизован.

Внимание!

В данном механизме не используются никакие сессии кроме той, что использует authHash. Таким образом, если при открытии следующей страницы, параметр authHash не будет подставлен в JS-код, пользователь снова будет в неавторизованном состоянии.

Внимание!

authHash является уникальным ключом, у которого есть период жизни. После наступления окончания этого периода, ключ необходимо обновить.

Внимание!

Если были переданы два параметра в JS-код: authHash и publicKey, приоритет будет отдан последнему.  

Внимание!

Для того чтобы в ответе вернулся параметр authHash, необходимо предварительно в запрос подставить extra_fields=auth_hash (см. здесь и здесь).

Пример

Например запрос к методу http://sailplay.ru/api/v1/users/points-info/ вернул результат:

auth_hash: "91bf9557a42194fd4cf7b417d583bb02305ead81"

В этом случае, кусок JS-кода будет выглядеть следующим образом:

var sp_options = {
 authHash: 91bf9557a42194fd4cf7b417d583bb02305ead81,
publicKey: 'none',

Открытие окна авторизации в этом же окне

Стандартный механизм перехода на страницу авторизации подразумевает открытие страницы авторизации в новом окне.

Если на вашем сайте не предусмотрена отдельная страница авторизации (авторизация просходит в попапе, или AJAX элементе) мы добавили возможность вызова JS функции при нажатии на кнопку “Авторизация” в popup.

 

Вызов JS реализуется через callback функцию (подробнее на странице документации).

Пример реализации:

 var _sp_options = {
      publicKey: "none",
      partnerId: "141",
      position: ["top", "right"],
      notifications: {
        enabled: true,
        skin: {type: 'horizontal', position: ['bottom', 'right']}
      }
  };
  (function() {
      var sp = document.createElement("script");
      sp.type = "text/javascript"; sp.async = true; sp.charset = "utf-8";
      sp.src = ("https:" == document.location.protocol ? "https://" : "http://") +
        "sailplay.ru/popup-sdk/js/sailplay/141/";
      var scr = document.getElementsByTagName("script")[0]; scr.parentNode.insertBefore(sp, scr);
  })();
  function SPready(SP){
    SP.events.subscribe('ui/click', function(data) { Popup.OpenAuth('/handlers/login.php'); );
  }