Vtiger API extensionsession, требующий проверки подлинности - PullRequest
0 голосов
/ 24 мая 2018

Я нахожусь в процессе расширения моего класса Vtiger (V7), чтобы включить все поддерживаемые методы.Я застрял при получении продления вызова на работу.Согласно веб-сайту я должен POST:

http://vtiger_url/webservice.php?operation=extendsession

Каждая попытка завершается неудачей с:

{
  "success": false,
  "error":
  {
    "code": "AUTHENTICATION_REQUIRED",
    "message": "Authencation required"
  }
}

Это мой текущий код:

private const string UrlSegmentOperation = "webservice.php?operation=";
private const string OperationExtendSession = "extendsession";

RestClient client = new RestClient(baseUrl + UrlSegmentOperation + OperationExtendSession);
RestRequest request = new RestRequest(Method.POST);
IRestResponse restResponse = client.Execute(request);

До сих пор я пробовал GET, POST, с именем сеанса, именем пользователя и обоими, но все же я получаю один и тот же результат.

Это то, на что у меня может не быть прав?У меня должен быть пользователь ADMIN, а все остальные вызовы работают без сбоев.

1 Ответ

0 голосов
/ 02 августа 2018

Согласно связанным документам.

Обратите внимание: если пользователь выполняет расширенный сеанс, то сеанс будет связан вместе, поэтому при выходе из одного (веб-сервисы или веб-клиент) пользователь выйдет издругой тоже.* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 100 * * * * * * * * * * 100 * * * * * * * * * * * * * 100 * * *.1014 * Ваш новый оставшийся клиент не будет уже аутентифицированным сеансом, так как он не включает файлы cookie, которые были возвращены вместе с ответом на вход в систему.

Я бы предложил иметь одного клиента на весь срок службы приложения для этой конечной точки.а также иметь общий контейнер cookie для хранения любых файлов cookie, которые были бы возвращены из предыдущих запросов.

public static class Rest {
    static Lazy<RestClient> client = new Lazy<RestClient>(() => {
        var endpoint = "webservice.php";
        var endPointUrl = baseUrl + endpoint;    
        var client = new RestClient(endPointUrl);
        client.CookieContainer = new System.Net.CookieContainer();
        return client
    });

    public static RestClient Client {
        get {
            return client.Value;
        }
    }
}

При этом любые файлы cookie, установленные или не заданные в ответах, будут использоваться в последующих запросах.

Вышеуказанное будет использоваться для отправки всех запросов к веб-сервису.Файлы cookie будут устанавливаться при входе в веб-сервис.

В том числе при совершении звонка для продления сеанса.

private const string OperationExtendSession = "extendsession";    

var request = new RestRequest(Method.POST);
request.AddParameter("operation", OperationExtendSession);

IRestResponse restResponse = Rest.Client.Execute(request);
...