使用 Google Directory API 创建新的 Google 帐户时出错

问题描述

我正在尝试在 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 转换已经在幕后自动发生了。

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...