Создание нового пользователя Google admin sdk python

Я получаю сообщение об ошибке, что Google не распознает имена пользователей в JSON. Я не могу найти способ включить http-приложение заголовка /json. Обратный URL дает мне другой код ошибки, но я прошёл аутентификацию при входе.

Мой код:

from __future__ import print_function
from apiclient.discovery import build
from httplib2 import Http
from oauth2client import file, client, tools
import requests
import json
import pprint

# Setup the Admin SDK Directory API
SCOPES = 'https://www.googleapis.com/auth/admin.directory.user'
#Global scope for access to all user and user alias operations.
store = file.Storage('credentials.json')
creds = store.get()
if not creds or creds.invalid:
    flow = client.flow_from_clientsecrets('client_secret.json', SCOPES)
    creds = tools.run_flow(flow, store)
service = build('admin', 'directory_v1', http=creds.authorize(Http()))
# Call the Admin SDK Directory API
userInfo = {
    "name" : {
        "givenName" : "Donald",
        "familyName" : "Dump",
    },
    "kind" : "user",
    "primaryEmail" : "testUser@test.com",
    "isAdmin": False,
    "isDelegatedAdmin": False,
    "agreedToTerms": True,
    "password": "testpass1234",
    "changePasswordAtNextLogin": True  
}
response = service.users().insert(body=json.dumps(userInfo)).execute()

Код ошибкиПозиционная оболочка _helpers.pyСсылка, которая произвела HttpError 400

1 ответ

У меня нет опыта работы с API Google, но я полагаю, что он ожидает допустимый JSON, поэтому у нас есть проблема в коде даже перед отправкой самого запроса. Итак, прежде чем идти дальше, вы должны исправить заявленный словарь: "isAdmin": "false", не в порядке, потому что True/False являются логическими значениями, однако вы отправляете их как строку. Ты должен написать "isAdmin": False, вместо. Если редактируете сам файл json, напишите falseпотому что в python логические значения начинаются с заглавной буквы, но не в JSON.

Позвольте мне добавить свои 50cc. Этот код у меня работает.

admin_user_payload = {
 "status": "true"
 } 

request = service.users().makeAdmin(userKey='admin_user_key', body=admin_user_payload)
admin = request.execute()

где admin_user_key должно быть например info@myaccount.com. Я имею в виду, что это userKey.

isAdminвставка пользователя в полезную нагрузку по умолчанию игнорируется. Для создания администратора пользователя вы должны использовать метод makeAdmin передача userKey (адрес электронной почты пользователя действителен) и полезные данные со статусом:true.

Ниже вы можете найти всю документацию по API.

https://google-api-client-libraries.appspot.com/documentation/admin/directory_v1/python/latest/admin_directory_v1.users.html

Другие вопросы по тегам