В popup’е SailPlay реализован механизм авторизации пользователя без ввода логина и пароля пользователем. Весь процесс выглядит следующим образом:
Партнер делает запрос к методу получения информации о клиенте, либо к методу добавления клиента в системе SailPlay, в ответе возвращается параметр auth_hash.
При генерации пользовательской страницы, необходимо подставить параметр authHash в JS-код SailPlay.
В данном механизме не используются никакие сессии кроме той, что использует 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'); ); }