环境详细信息
3.7.9
pip 19.1.1 from /usr/lib/python3.7/site-packages/pip (python 3.7)
google-api-python-client
版本:1.12.5
复制步骤
代码示例
#self.orgunits is created previously and points to a valid google api session.
self.orgunits = build('admin', 'directory_v1', credentials=creds).orgunits()
user.dept = "Technology"
user.func_unit = "Systems"
#This returns a value that appears valid
parent_id = self.orgunits.get(customerId="xxxxxxx", orgUnitPath=f"{user.dept}").execute()['orgUnitId']
#The department parent org unit exists
print(self.orgunits.get(customerId="xxxxxx", orgUnitPath=f"{user.dept}").execute())
new_ou = {
'name': f"{user.func_unit}",
'parentOrgUnitPath' : f"{user.dept}"
}
print(json.dumps(new_ou)) #Everything appears fine here
try:
self.orgunits.insert(customerId="xxxxxx", body=json.dumps(new_ou)).execute()
except HttpError as ie:
print(ie.__dict__)
输出
{'kind': 'admin#directory#orgUnit', 'etag': '"HKDSgTnCxrWl3RtRnlZSCPY3NjdWJxz53nrhwSz7ob4/w1e7lJjaci7tVElbAz8hlgavRvg"', 'name': 'Technology', 'description': 'Technology department', 'orgUnitPath': '/Technology', 'orgUnitId': 'id:03ph8a2z0jkzi9y', 'parentOrgUnitPath': '/', 'parentOrgUnitId': 'id:037oov482lkthdl'}
{"name": "Systems", "parentOrgUnitPath": "/Technology"}
{'resp': {'vary': 'Origin, X-Origin, Referer', 'content-type': 'application/json; charset=UTF-8', 'date': 'Wed, 28 Oct 2020 20:59:43 GMT', 'server': 'ESF', 'cache-control': 'private', 'x-xss-protection': '0', 'x-frame-options': 'SAMEORIGIN', 'x-content-type-options': 'nosniff', 'alt-svc': 'h3-Q050=":443"; ma=2592000,h3-29=":443"; ma=2592000,h3-T051=":443"; ma=2592000,h3-T050=":443"; ma=2592000,h3-Q046=":443"; ma=2592000,h3-Q043=":443"; ma=2592000,quic=":443"; ma=2592000; v="46,43"', 'transfer-encoding': 'chunked', 'status': '400', 'content-length': '224', '-content-encoding': 'gzip'}, 'content': b'{\n "error": {\n "code": 400,\n "message": "Invalid Parent Orgunit Id",\n "errors": [\n {\n "message": "Invalid Parent Orgunit Id",\n "domain": "global",\n "reason": "invalid"\n }\n ]\n }\n}\n', 'uri': 'https://www.googleapis.com/admin/directory/v1/customer/xxxxxx/orgunits?alt=json', 'error_details': ''}
格式化的http响应
{
'resp': {
'vary': 'Origin, X-Origin, Referer',
'content-type': 'application/json; charset=UTF-8',
'date': 'Wed, 28 Oct 2020 20:59:43 GMT',
'server': 'ESF',
'cache-control': 'private',
'x-xss-protection': '0',
'x-frame-options': 'SAMEORIGIN',
'x-content-type-options': 'nosniff',
'alt-svc': 'h3-Q050=":443"; ma=2592000,h3-29=":443"; ma=2592000,h3-T051=":443"; ma=2592000,h3-T050=":443"; ma=2592000,h3-Q046=":443"; ma=2592000,h3-Q043=":443"; ma=2592000,quic=":443"; ma=2592000; v="46,43"',
'transfer-encoding': 'chunked',
'status': '400',
'content-length': '224',
'-content-encoding': 'gzip'
},
'content': b '{\n "error": {\n "code": 400,\n "message": "Invalid Parent Orgunit Id",\n "errors": [\n {\n "message": "Invalid Parent Orgunit Id",\n "domain": "global",\n "reason": "invalid"\n }\n ]\n }\n}\n',
'uri': 'https://www.googleapis.com/admin/directory/v1/customer/xxxxxx/orgunits?alt=json',
'error_details': ''
}
我尝试过的
我参考了以下文件: 谷歌文档:https://developers.google.com/admin-sdk/directory/v1/reference/orgunits/insert
以下所有操作都会导致与消息Invalid Parent Orgunit Id
相同的400
错误
new_ou
对象中使用parentOrgUnitId
而不是parentOrgUnitPath
,如上述文档中所述李>parentOrgUnitPath
值添加/删除前导斜杠和尾随斜杠李>new_ou
对象内部的fstring李>etag
并用更新的值替换其余值李>非常感谢您的帮助!谢谢大家!
已解决
在Google的OAuth2平台上进行了大量的跟踪和挖掘之后,我推断这是因为当为orgunit设置body参数时,insert不能用^{格式化。它必须是Python字典
更改:
self.orgunits.insert(customerId="xxxxxx", body=json.dumps(new_ou)).execute()
致:
self.orgunits.insert(customerId="xxxxxx", body=new_ou).execute()
相关问题 更多 >
编程相关推荐