用于配置用户谷歌应用程序admin-sdk的python代码

use*_*785 3 python provisioning google-admin-sdk

我正在转换到新的admin-sdk api,而不是很容易找到它.我已经想出了誓言和基本的用户查询,但现在我不得不创建一个谷歌应用程序帐户.

这是我正在使用的代码:

import httplib2
import pprint
import sys

from apiclient.discovery import build
from oauth2client.client import SignedJwtAssertionCredentials

SERVICE_ACCOUNT_EMAIL = 'xyz@developer.gserviceaccount.com'
SERVICE_ACCOUNT_PKCS12_FILE_PATH = 'privatekey.p12'
f = file(SERVICE_ACCOUNT_PKCS12_FILE_PATH, 'rb')
key = f.read()
f.close()

credentials = SignedJwtAssertionCredentials(SERVICE_ACCOUNT_EMAIL,
             key,
             scope='https://www.googleapis.com/auth/admin.directory.user',
             sub='myadmin@mydomain.edu',
)
http = httplib2.Http()
http = credentials.authorize(http)

userinfo = { 'primaryEmail': 'jane@mydomain.edu',
     'name': { 'givenName': 'Jane', 'familyName': 'Smith' },
    'password': 'mypasswd',
}

service = build("admin", "directory_v1", http=http)
users = service.users()
users.insert(userinfo).execute()
Run Code Online (Sandbox Code Playgroud)

这是结果:

Traceback (most recent call last):
File "xy", line 39, in <module>
new_user = users.insert(userinfo ).execute()
TypeError: method() takes exactly 1 argument (2 given)
Run Code Online (Sandbox Code Playgroud)

我在这个主题上尝试了很多排列无济于事,包括:

users.insert(name='Jane Smith', password='mypasswd', name.familyName='Smith', 
name.givenName='Jane', primaryEmail='jane@testg.berkeley.edu').execute()

SyntaxError: keyword can't be an expression

users.insert(name='Jane Smith', password='mypasswd', familyName='Smith', 
givenName='Jane', primaryEmail='jane@testg.berkeley.edu').execute()

File "build/bdist.linux-x86_64/egg/apiclient/discovery.py", line 573, in method
TypeError: Got an unexpected keyword argument "givenName"
Run Code Online (Sandbox Code Playgroud)

任何帮助将不胜感激.

Jay*_*Lee 6

尝试:

userinfo = {'primaryEmail': 'jane@mydomain.edu',
            'name': { 'givenName': 'Jane', 'familyName': 'Smith' },
            'password': 'mypasswd',
}
service = build("admin", "directory_v1", http=http)
service.users().insert(body=userinfo).execute()
Run Code Online (Sandbox Code Playgroud)