Vtiger API extendsession 需要返回身份验证

Vtiger API extendsession returning authentication required

我正在扩展我的 Vtiger (V7) class 以包括所有支持的方法。我一直坚持让 extendsession 调用正常工作。根据 website 我必须 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 用户,所有其他调用都可以正常工作。

根据链接文档。

Notice: if the user does a Extend Session then the session will be tied together, so logging out one(webservices or web client) will log the user out of the other as well. for extend session operation to work cookies must be enabled on the client browser.

(强调我的)

您的新 rest 客户端不会是已经过身份验证的会话,因为它不包含随登录响应返回的任何 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);