问题描述
我正在尝试在 Python 脚本中使用 Google Directory API 自动创建 Google 帐户。但是当我运行我的脚本时,出现以下错误:
Traceback (most recent call last):
File "./create_user.py",line 34,in <module>
main()
File "./create_user.py",line 31,in main
directory.create_user(userInfo)
File "/home/romain/dev/ezdrive/access-auto/google_wrapper/directory.py",line 27,in create_user
self.service.users().insert(body=json.dumps(userInfo)).execute()
File "/home/romain/dev/ezdrive/access-auto/env/lib/python3.8/site-packages/googleapiclient/_helpers.py",line 134,in positional_wrapper
return wrapped(*args,**kwargs)
File "/home/romain/dev/ezdrive/access-auto/env/lib/python3.8/site-packages/googleapiclient/http.py",line 943,in execute
raise HttpError(resp,content,uri=self.uri)
googleapiclient.errors.HttpError: <HttpError 400 when requesting https://admin.googleapis.com/admin/directory/v1/users?alt=json returned "Invalid Input: primary_user_email". Details: "[{'message': 'Invalid Input: primary_user_email','domain': 'global','reason': 'invalid'}]">
这是创建帐户的代码:
def main():
userInfo = {
"name": {
"givenname": "Romain","familyName": "Test DEV 1"
},"kind": "user","primaryEmail": "romain.test1@mydomain.net","isDelegatedAdmin": False,"suspended": False,"isAdmin": False,"agreedToTerms": True,"password": "Password456","changePasswordAtNextLogin": True
}
directory.create_user(userInfo)
class Directory:
def __init__(self):
self.get_service()
def get_service(self):
creds = oauth_login()
self.service = build('admin','directory_v1',credentials=creds)
def create_user(self,userInfo):
self.service.users().insert(body=json.dumps(userInfo)).execute()
我已经检查过primaryEmail 使用了正确的域名,所以我真的不明白出了什么问题。
预先感谢您的帮助!
解决方法
我终于找到了我的问题所在。我在某处读到我应该做 service.users().insert(body=json.dumps(userInfo))
但实际上我只需要做 service.users().insert(body=userInfo)
。
我猜 JSON 转换已经在幕后自动发生了。