<?php
$ch = curl_init('https://demo.ewa.ua/ewa/api/v12/user/login');
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, 'email=test_api@test.com&password=6216f8a75fd5bb3d5f22b6f9958cdede3fc086c2');
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$result = curl_exec($ch);
Либо <?php
$post = [
'email' => 'test_api@test.com',
'password' => '6216f8a75fd5bb3d5f22b6f9958cdede3fc086c2',
];
$ch = curl_init('https://demo.ewa.ua/ewa/api/v12/user/login');
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, $post);
curl_setopt($ch, CURLOPT_HTTPHEADER, 'content-type: application/x-www-form-urlencoded');
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$result = curl_exec($ch);
fwrite(&size, sizeof(size), 1, fp);
<?php
$client = new SoapClient('http://api.vtt.ru:8048/Portal.svc?singleWsdl', ['trace' => true]);
$items = $client->GetCategoryItems(['login' => 'abc', 'password' => '123', 'categoryId' => 1]);
var_dump($client->__getLastRequest());
<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ns1="http://portal.vtt.ru">
<SOAP-ENV:Body>
<ns1:GetCategoryItems>
<ns1:login>abc</ns1:login>
<ns1:password>123</ns1:password>
<ns1:categoryId>1</ns1:categoryId>
</ns1:GetCategoryItems>
</SOAP-ENV:Body>
</SOAP-ENV:Envelope>
Рабочий токен выдаётся на короткое время (минуты - десятки минут). Внутри содержится срок окончания действия токена, идентификатор пользователя, его права, какая-то информация для минимизации обращений к БД по данному пользователю. Токен на сервере не сохраняется.
Токен обновления выдаётся на длительное время (часы - дни). Внутри содержится срок окончания действия токена и идентификатор пользователя для автоматической аутентификации. Токен хранится в БД вместе с идентификатором пользователя.
1. Клиент аутентифицируется/авторизуется на сервере со своим логином/паролем.
2. Сервер генерирует пару токенов, короткоживущий рабочий и долгоживущий для обновления. Токен обновления записывается в БД.
3. Клиент присылает запрос с рабочим токеном.
4. Сервер проверяет токен.
4а. Токен действительный и неистекший, сервер отвечает на запрос.
4б. Токен действительный, но истекший, сервер сообщает о необходимости обновления токена.
4в. Токен недействительный, сервер сообщает о необходимости входа по логину/паролю (на п.1).
5. Клиент присылает токен обновления.
6. Сервер проверяет токен, в том числе и в БД.
6а. Токен обновления недействительный, сервер сообщает о необходимости входа по логину/паролю (на п.1).
6б. Токен обновления действительный, но в БД отсутствует, сервер удаляет все токены обновления этого пользователя из БД и сообщает о необходимости входа по логину/паролю (на п.1).
6в. Токен обновления действительный, но просроченный, сервер удаляет этот токен из БД и сообщает о необходимости входа по логину/паролю (на п.1).
6г. Токен обновления действительный, непросроченный, в БД присутствует. Сервер удаляет этот токен из БД, генерирует новую пару, записывает новый токен обновления в БД и отправляет токены клиенту (на п.3).