Материал из Joonte Wiki
Перейти к: навигация, поиск
м
Строка 35: Строка 35:
 
== Авторизация в системе ==
 
== Авторизация в системе ==
 
Авторизация - совокупность двух этапов: идентификации и авторизации. Идентификация в системе JBs происходит с использованием электронного адреса и пароля пользователя.
 
Авторизация - совокупность двух этапов: идентификации и авторизации. Идентификация в системе JBs происходит с использованием электронного адреса и пароля пользователя.
 +
 +
{| border="1"
 +
|-
 +
|Имя модуля||/API/Logon
 +
|-
 +
|colspan="2"|Параметры
 +
|-
 +
|Email||Электронный адрес пользователя
 +
|-
 +
|Password||Пароль пользователя
 +
|}
 +
 +
В случае успешного выполнения ответ будет выглядеть как:
 +
 +
<pre>
 +
{Status:'Ok',SessionID:'SESSION48e65f5de64e3',Home:'/Home'}
 +
</pre>
 +
 +
* '''SessionID''' - уникальный идентификатор сессии выданный системой, может быть в последующем передаваться системе для выполнения многократных запросов.
 +
* '''Home''' - адрес домашней страницы пользователя. По умолчанию для всех клиентов устанавливается как /Home, для администраторов /Administrator/Home.
 +
 +
После успешной удаленной авторизации на вашем сайте, Вы можете перенаправить пользователя в систему:
 +
 +
<pre>
 +
Location: http(s)://domain{Home}?SessionID={SessionID}
 +
</pre>
 +
 +
Пример сценария авторизации на языке PHP:
 +
 +
<pre>
 +
<?php
 +
#-------------------------------------------------------------------------------
 +
$Email    = 'admin@company.com';
 +
$Password = 'default';
 +
#-------------------------------------------------------------------------------
 +
$Request = SPrintF('http://joonte.com/API/Logon?XMLHttpRequest=yes&Email=%s&Password=%s',$Email,$Password);
 +
#-------------------------------------------------------------------------------
 +
$Answer = @File_Get_Contents($Request);
 +
if(!$Answer)
 +
  Exit('Request error');
 +
#-------------------------------------------------------------------------------
 +
$Answer = @JSON_Decode($Answer,TRUE);
 +
if(!$Answer)
 +
  Exit('Bad answer');
 +
#-------------------------------------------------------------------------------
 +
switch($Answer['Status']){
 +
  case 'Error':
 +
    #---------------------------------------------------------------------------
 +
    $Error = $Answer['Error'];
 +
    #---------------------------------------------------------------------------
 +
    Exit($Error['String']);
 +
  case 'Exception':
 +
    #---------------------------------------------------------------------------
 +
    $Exception = $Answer['Exception'];
 +
    #---------------------------------------------------------------------------
 +
    Exit($Exception['String']);
 +
  case 'Ok':
 +
    #---------------------------------------------------------------------------
 +
    Header(SPrintF('Location: http://joonte.com%s?SessionID=%s',$Answer['Home'],$Answer['SessionID']));
 +
    #---------------------------------------------------------------------------
 +
    Exit;
 +
  default:
 +
    Exit('Wrong status');
 +
}
 +
#-------------------------------------------------------------------------------
 +
?>
 +
</pre>

Версия 14:42, 14 февраля 2009

Ключевые слова: api, удалённая регистрация, авторизация

Под интеграцией в данной статье мы понимаем процесс объединения информационной биллинговой системы JBs с использованием внешних веб-интерфейсов со сторонними информационными системами.

Описание интерфейса

Удалённый вызов функций системы JBs осуществляется с использованием протокола HTTP. Передача параметров может осуществляться как через GET так и через POST запросы. Обязательным для передачи всегда является параметр XMLHttpRequest=yes.

Ответы системы представлены в виде объектов формата JSON. Общий вид ответа выглядит следующим образом:

{Status:('Error','Exception','Ok'),Name1:Value1,Name2:Value2...}

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

Виды ответа на запрос

  • Если в процессе обработки запроса произошла ошибка (нет доступа к базе данных, ошибка работы с файловой системой и т.д.) - ответ системы будет выглядеть следующим образом:
{Status:'Error',Error:{CodeID:500,String:'Критическая ошибка'}}
  • В случае, если в процессе обработки запроса произошло "исключение" (не верный формат входных данных, объект не найден в базе данных и т.д.) - ответ системы будет выглядеть как:
{Status:'Exception',Exception:{CodeID:'EXCEPTION_CODE',String:'Произошло исключение'}}

Исключение "ожидаемо", т.е. система уже была готова к тому что такая ситуация может произойти и среагировать на нее. Это отличает "исключения" от "ошибок". Каждый вызываемый модуль имеет свои исключения.

  • Если системе успешно удалось обработать входящий запрос ответ будет следующим:
{Status:'Ok',Name1:Value1,Name2:Value2,...}

Ответ может содержать любые данные выдаваемые модулем.

Для удаленного вызова функций Вы в начале должны пройти авторизацию.

Авторизация в системе

Авторизация - совокупность двух этапов: идентификации и авторизации. Идентификация в системе JBs происходит с использованием электронного адреса и пароля пользователя.

Имя модуля /API/Logon
Параметры
Email Электронный адрес пользователя
Password Пароль пользователя

В случае успешного выполнения ответ будет выглядеть как:

{Status:'Ok',SessionID:'SESSION48e65f5de64e3',Home:'/Home'}
  • SessionID - уникальный идентификатор сессии выданный системой, может быть в последующем передаваться системе для выполнения многократных запросов.
  • Home - адрес домашней страницы пользователя. По умолчанию для всех клиентов устанавливается как /Home, для администраторов /Administrator/Home.

После успешной удаленной авторизации на вашем сайте, Вы можете перенаправить пользователя в систему:

Location: http(s)://domain{Home}?SessionID={SessionID}

Пример сценария авторизации на языке PHP:

<?php
#-------------------------------------------------------------------------------
$Email    = 'admin@company.com';
$Password = 'default';
#-------------------------------------------------------------------------------
$Request = SPrintF('http://joonte.com/API/Logon?XMLHttpRequest=yes&Email=%s&Password=%s',$Email,$Password);
#-------------------------------------------------------------------------------
$Answer = @File_Get_Contents($Request);
if(!$Answer)
  Exit('Request error');
#-------------------------------------------------------------------------------
$Answer = @JSON_Decode($Answer,TRUE);
if(!$Answer)
  Exit('Bad answer');
#-------------------------------------------------------------------------------
switch($Answer['Status']){
  case 'Error':
    #---------------------------------------------------------------------------
    $Error = $Answer['Error'];
    #---------------------------------------------------------------------------
    Exit($Error['String']);
  case 'Exception':
    #---------------------------------------------------------------------------
    $Exception = $Answer['Exception'];
    #---------------------------------------------------------------------------
    Exit($Exception['String']);
  case 'Ok':
    #---------------------------------------------------------------------------
    Header(SPrintF('Location: http://joonte.com%s?SessionID=%s',$Answer['Home'],$Answer['SessionID']));
    #---------------------------------------------------------------------------
    Exit;
  default:
    Exit('Wrong status');
}
#-------------------------------------------------------------------------------
?>