0

我无法以编程方式在 vTiger 7 中创建用户。我正在使用 python 并得到以下错误响应:

{u'error': {u'code': u'ACCESS_DENIED',
  u'message': u'Permission to perform the operation is denied for id'},
 u'success': False}

我猜我发送到服务器的 id 有问题。

这是我的代码:

url='http://owl24.ru/webservice.php/'
username='weblanss'
values = {'operation':'getchallenge','username': username }
data = urllib.urlencode(values)
req = urllib2.Request('%s?%s' % (url,data))
response = urllib2.urlopen(req).read()
token = json.loads(response)['result']['token']
key = md5(token + accessKey)
tokenizedAccessKey = key.hexdigest()
values['accessKey'] = tokenizedAccessKey
values['operation']  = 'login'
data = urllib.urlencode(values)
req = urllib2.Request(url, data)
response = urllib2.urlopen(req).read()

values['sessionName'] = json.loads(response)['result']['sessionName']
values['userId'] =json.loads(response)['result']['userId']
values['operation'] = 'create'
values['elementType'] = 'Users'
data = urllib.urlencode(values)

dic = collections.OrderedDict([,('userId','19x12'),
        ('lastname', 'test_user2'),
('user_name','nam3'),('user_password','user_password'),('confirm_password','user_password'),('roleid','H1')])
dic = json.dumps(dic)
values['element']=dic
data = urllib.urlencode(values)
req = urllib2.Request(url, data)
response = urllib2.urlopen(req)
response = json.loads(response.read())

我尝试了很多不同的 id,例如发送我从服务器获得的分配的 id。我在 vtiger 中的角色允许我创建用户。也许我需要改变身份证。此外,我已成功登录并获得成功响应。我可以毫无困难地创建联系人,但我无法创建用户。我总是得到 -Permission to perform the operation is denied for id'。也许我应该在assigned_id 字段或userId 中发送一些特殊的东西?

4

1 回答 1

-1

获取 API 调用
的实际过程 1)首先您需要获取 GetChallengeResult(挑战令牌)
2)您在 vtiger 上的帐户已经拥有 userAccessKey。
3) 现在你必须连接这两个键,然后你必须将这个连接的字符串散列到 MD5
4) 并且要进行 api 调用,你需要传递 "sessionName"=>$sessionId, "operation"=>'create' where sessionName 是您使用生成的密钥 (md5) 成功登录时从 vtiger 获得的名称。

我已经为 vtiger 7 编写了一个 HTTP 客户端来进行 API 调用,但使用的是 PHP 而不是 Python。如果您愿意,我可以发布该代码。但请先使用 python 自行尝试上述步骤。

我使用此Vtiger 链接创建 HTTP 客户端应用程序以进行 API 调用 vtiger 7。正如我们所知,vtiger API 不是完全 RESTful API,并且未按预期使用 oAuth 规范,因此很难进行复杂的 API 调用。

于 2017-06-27T21:30:56.970 回答