м |
|||
| Строка 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 |
| Параметры | |
| Электронный адрес пользователя | |
| 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');
}
#-------------------------------------------------------------------------------
?>