繁体   English   中英

使用python的“用户更新过程”中的MS Graph API“无法转换原始值”

[英]MS Graph API “Cannot convert a primitive value” during “user update process” using python

目前,我可以在o365中创建用户并使用python脚本列出他们。

我现在尝试运行一个非常简单的更新,并且在应用使用位置时遇到问题(因此我也可以应用需要此许可的许可证),但是当我这样做时,出现以下错误:

{'错误':{'代码':'Request_BadRequest','消息':“无法将原始值转换为预期的类型'Edm.Guid'。有关更多详细信息,请参见内部异常。”,'innerError':{'日期”:“ 2019-08-06T18:51:25”,“请求ID”:“ 4e6c89c2-e3c6-xxxxx'}}}

显然,它正在寻找一些UID样式条目,但是我正在填充的字段(根据api docs)是2个字符串。 我的请求不正确吗?

这是我用于此特定任务的代码。

  # Update a user entry
  def updateUser(self,userupn,maildomain,usagelocation):
    userMail = userupn + '@' + maildomain
    header_params = {
      'Authorization': self.token_type + ' ' + self.access_token2,
      'Content-Type': 'application/json'
    }
    request_body = {
        #'accountEnabled': 'true',
        'usageLocation': usagelocation,
      }

    request_string = 'https://graph.microsoft.com/v1.0/' + userMail
    response = requests.post(request_string, data=json.dumps(request_body), headers=header_params)
    data = response.json()
    return data        

从我在api文档中看到的内容来看,应该足以将usageLocation设置为“ US”或其他2个字母的值。

因此,问题是一些问题,我得以解决。 这是我现在最后要完成的工作。 万一其他人在我后面遇到类似问题。 这个问题的简短版本是我使用了request.post()而不是request.patch()。

  # Update a user entry
  def updateUser(self,userupn,maildomain,usagelocation):
    userMail = userupn + '@' + maildomain
    header_params = {
      'Authorization': self.token_type + ' ' + self.access_token2,
      'Content-Type': 'application/json'
    }
    request_body = {
        'accountEnabled': 'true',
        'passwordPolicies': 'DisablePasswordExpiration',
        'usageLocation': usagelocation,
        'country': usagelocation,
        'officeLocation': usagelocation,
      }

    request_string = 'https://graph.microsoft.com/v1.0/users/' + userMail
    response = requests.patch(request_string, data=json.dumps(request_body), headers=header_params)
    return response

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM