Read in English

Руководство по интеграции ISP Login

Данное руководство поможет вам интегрировать технологию ISP Login в ваш проект.

Демонстрация

Откройте демонстрационную страницу, нажмите кнопку "Login via InvestorsStartPage".

Откройте исходник страницы. Найдите строку:

// TODO: evt.data contains ISP-Login profile in JSON-string format

В этом месте вы можете обработать данные профиля пользователя, возвращённого ISP. Например, отправить на сервер для регистрации в базе.

Измените демо

Скачайте демо-страницу.

Функция isp_login_popup() отвечает за открытие окна входа и не требудет изменения. Забирайте как есть в свой проект на страницу входа.

Самое важное происходит в обработчике ниже.

Результат входа (профиль) либо отказа от входа отобразится в DIV ниже кнопки входа с помощью jQuery:

$('#isp-result').text(unescape(evt.data));

Закомментируйте эту строку и раскомментируйте эту:

// console.log(unescape(evt.data));

Перезагрузите изменённую демо-страницу. В консоли разработчика браузера переключитесь на вкладку "Console". Нажмите кнопку "Login via InvestorsStartPage". Профиль отобразится в консоли.

Данные профиля представлены в формате JSON, можно использовать ваш любимый парсер на стороне сервера для разбора профиля.

Серверная сторона

Простой пример приёма и отображения разобранного профиля на PHP:

$isp_profile = json_decode($_POST["isp_profile"]); // use parsed data by field name: echo $isp_profile->{'token'}; // or dump all profile fields var_dump($isp_profile);

Поместите этот демо-скрипт на сервер (например, в reg.php) и выполните связку получения профиля на JS с отправкой на ваш сервер.

Как упоминалось выше, в демо-странице есть комментарий:

// TODO: evt.data contains ISP-Login profile in JSON-string format

Давайте отправим полученный профиль при помощи AJAX-запроса на сервер в демонстрационный PHP-скрипт.

Замените TODO-комментарий на код:

$.post( "http://yourserver.com/reg.php", { isp_profile: unescape(evt.data) } );

Разместите демо-страницу и PHP-скрипт приёма профиля на ваш сервер (на один и тот же, для простоты, чтобы избежать сложностей с кросс-доменными AJAX-запросами).

Загрузите в демо-страницу с вашего сервера, нажмите кнопку "Login via InvestorsStartPage" и пронаблюдайте, как на вкладке "Network" консоли разработчика в браузере будет отправлен XHR запрос. Данные профиля должны быть отображены через PHP-скрипт. Есои всё происходит так, значит вы готовы обрабатывать их, например зарегистрировать пользователя.

Кодировка ответа — utf8. Каждое значение — строка не более 256 символов.

UID (ID пользователя) — это строка, содержащая номер, например, "12345". UID — это надёжный идентификатор профиля (пользователь не может его изменить). Его можно использовать, чтобы распознавать уникального пользователя.

Если какие-то поля профиля (необязательные) не заполнены пользователем, они будут представлены как пустые строки в JSON.

Пример кнопки входа:

Other button styles (HTML/CSS) see on this page.

Кнопки для входа доступны в нескольких стилях. Можете использовать подходящий вариант из примеров на этой странице (исполненный в HTML/CSS).

Верификация ответа

JSON-кодированный профиль пользователя, возвращённый через JavaScript-часть, может быть дополнительно проверен через запрос от вашего сервера к нашему. Используйте поле "token" в профиле.

Отправьте значение поля "token" в запросе вида:

curl https://login.investorsstartpage.com/check.aspx?token=5c8d624e-73ba-4440-9165-75209f63c393

Ответ будет представлен в формате JSON.

Ответ при успешной верификации:

{ "status" : 1, "UID" : "12345", ... }

Ключевые поля ответа при успешной проверке — это: UID и status. Все остальные поля — данные профиля. В этом месте можно удостовериться, что профиль, отданный через JS, и полученный от нашего сервера, совпадают.

Ответ при неуспешной проверке:

{ "status" : 0 }

Если status равен 0, никакие другие поля не передаются.

Токен живёт 5 минут.

Токен может быть использован для проверки только один раз. После успешной проверки токен удаляется на нашей стороне (попытка повторной проверки и получения профиля с нашего сервера приведёт к неудаче).

Поведение окна входа

Диалог показывает сайт, запрашивающий профиль.

Есть три варианта развития событий по клику на кнопку входа:

  1. Пользователь авторизован в ISP и имеет заполненный профиль. Он может войти в ваш проект в один клик прямо сейчас.
  2. Пользователь авторизован в ISP и не имеет заполненного профиля. Он будет перенаправлен на страницу заполнения профиля. Это нужно сделать один раз.
  3. Пользователь не авторизован на ISP. Его попросят авторизоваться (у нас) на InvestorsStartPage.com. Дальнейшее зависит от наличия/отсутствия заполненного профиля.