转换此英文标题为中文,并不包括任何特殊字符或引号:无法反序列化为对象:类型,键错误:键:整数; 值:字符串

2024-09-30 02:14:55 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在编写一个python脚本来使用python客户端库forazuredevops restapi在azuredevops中创建用户。在

我正在使用MemberTitlementManagementClient的add_user_entitlement()功能。在

链接到该客户端的代码:

https://github.com/microsoft/azure-devops-python-api/blob/dev/azure-devops/azure/devops/v5_0/member_entitlement_management/member_entitlement_management_client.py

相应的REST API文档:

https://docs.microsoft.com/en-us/rest/api/azure/devops/memberentitlementmanagement/user%20entitlements/add?view=azure-devops-rest-4.1

我写了代码:

from azure.devops.connection import Connection
from azure.devops.v5_0.member_entitlement_management.models import *
import pprint

personal_access_token = <my token>

credentials = BasicAuthentication('', personal_access_token)
connection = Connection(base_url=organization_url, creds=credentials)

member_ent_mngmnt_client = connection.clients_v5_0.get_member_entitlement_management_client()

# List member entitlements
resp = member_ent_mngmnt_client.get_user_entitlements()
print(resp)

# ------ Add user entitlement -----------------

access_level = AccessLevel("express", None, None, None, None, None, None)
print(access_level)

graph_user = GraphUser(None, None, None, None, None, None, None, "user", None, None, "anaya.john@dynactionize.onmicrosoft.com", None, None, None)
 print(graph_user)

user_entitlement = UserEntitlement(None, None, None, None, None, None, graph_user)
print(user_entitlement)

# This is to check what is sent as the request body of REST API POST request
content = member_ent_mngmnt_client._serialize.body(user_entitlement, 'UserEntitlement')
print("\n Content : \n")
print(content)    

# Add user entitlement
resp = member_ent_mngmnt_client.add_user_entitlement(user_entitlement)  

print("\n Result: \n")  
print(resp)  

但我得到的输出有一个错误msrest.exceptions.DeserializationError:

^{pr2}$

有人能帮我解决这个错误吗?在


Tags: comclientnoneaddaccessazurerespmanagement
1条回答
网友
1楼 · 发布于 2024-09-30 02:14:55

反序列化错误表示python无法反序列化对UserEntitlementsPostResponse类型的对象的响应。当响应不是预期的响应时,就会发生这种情况。在

我编辑了python客户机的MemberEntitlementManagementClient类的add_user_entitlement()函数,方法是添加一行打印POST请求的响应。得到的答复是:

{'operationResult': {'isSuccess': False, 'errors': [{'key': 5032, 'value': 'Access Denied: This user needs the following permission(s) on the resource Users to perform this action: Add Users'}], 'userId': '261d25ad091b', 'result': None}, 'isSuccess': False, 'userEntitlement': None}

显然,这不是预期的结果。并且不能将其转换为UserEntitlementsPostResponse类型的对象。因此,出现了错误。在

如错误所示,在将用户(运行脚本的人)添加到我们azuredevops组织中的“项目集合管理员”组后,脚本正常工作。在

此步骤非常重要,因为microsoft针对azure devops REST API的文档(https://docs.microsoft.com/en-us/azure/devops/organizations/accounts/add-organization-users?view=azure-devops#prerequisites)指出:

To access and manage users, you must have Azure DevOps project collection administrator or organization owner permissions.

相关问题 更多 >

    热门问题