Невозможно загрузить определенные параметры, такие как адреса электронной почты и телефоны, при вставке пользователей с gsuite admin sdk › directory API (python)

При создании пользователя gsuite с использованием каталога api (python lib: google-api-python-client) значения определенных параметров, а именно «электронная почта», «внешние идентификаторы», «телефоны», «организации», «пол» и все другие, которые не имеют простых строковых значений, а принимают значения как объект или массив объектов, не загружаются, несмотря на использование описанного формата в ссылках.

Шаблон python строго соответствует здесь, а вставленные значения соответствуют тексту запроса, указанному в это.

Хотя пользователь создается успешно, я не могу передать значения следующим параметрам:

электронная почта, телефоны, externalIds, пол

Даже копирование примера json из здесь, указав соответствующие значения и выполнив здесь не дал требуемых результатов.

Это проблема с самим directory-api?

например, тело отправлено в функцию вставки как arg:

{'addresses': '',
'posixAccounts': '',
'thumbnailPhotoEtag': '',
'suspended': False,
'keywords': '',
'aliases': [],
'nonEditableAliases': [],
'suspensionReason': '',
'thumbnailPhotoUrl': '',
'isAdmin': False,
'relations': '',
'languages': '',
'ims': '',
'lastLoginTime': '',
'orgUnitPath': '',
'agreedToTerms': True,
'ipWhitelisted': True,
'sshPublicKeys': '',
'primaryEmail': '[email protected]',
'password': 'SXXXXXXXXU',
'emails': [{'customType': '',
'type': 'home',
'primary': False,
'address': '[email protected]'},
{'customType': '',
'type': 'work',
'primary': True,
'address': '[email protected]'}],
'organizations': '',
'kind': 'admin#directory#user',
'hashFunction': None,
'name': {'fullName': 'abcTT def',
'givenName': 'abcTT',
'familyName': 'def'},
'gender': {'customGender': '',
'type': 'male'},
'notes': '',
'creationTime': '',
'phones': ([{'type': 'work',
'value': '+91 123 456 7895'}],),
'locations': '',
'isDelegatedAdmin': False,
'id': '',
'customSchemas': {},
'deletionTime': '',
'isEnrolledIn2Sv': False,
'includeInGlobalAddressList': True,
'etag': '',
'externalIds': [{'type': 'organization',
'value': '22222222'}],
'isEnforcedIn2Sv': False,
'isMailboxSetup': False,
'websites': '',
'changePasswordAtNextLogin': True,
'customerId': ''}

comment
Возможный аналогичный вопрос может быть следующим: stackoverflow.com/questions/32345670/ Но есть ли шанс заставить эту работу работать только на python   -  person aashu    schedule 25.12.2017
comment
Вы пробовали искать в Google выполнение cURL в Python?   -  person noogui    schedule 26.12.2017
comment
Что я сохранил его как последнее средство. Спасибо за предложение, но на самом деле я ищу любое решение проблемы с API. Потому что мне нужно использовать пакетный http-запрос google-api для большого количества запросов.   -  person aashu    schedule 26.12.2017


Ответы (1)


Это выглядит (по крайней мере, для трех из четырех) вплоть до того, как вы представляете аргументы и пару синтаксических ошибок:

  • Электронные письма — вы перечисляете работу «типа», а затем пытаетесь использовать пользовательский тип null, когда тип не является пользовательским, что остановит настройку переменной. Вы также пытаетесь дважды установить один и тот же адрес электронной почты в качестве основного, против чего он может возражать.
  • Телефоны - лишние круглые скобки
  • Пол снова обычай показывает там, где это может быть не предназначено.
  • Внешние идентификаторы немного сложнее, но у меня это работает с кодом ниже

Таким образом, пример команды, которая создаст пользователя с этими рабочими переменными, может быть (мне нравится сначала передавать мои данные в переменную):

userinfo = {'name': {'givenName': 'Test', 'familyName': 'User'}, 
'password': '456weakpass62£&', 'primaryEmail': '[email protected]',
'emails': [{'type': 'home', 'address': '[email protected]'}, 
{'type': 'work', 'value': '[email protected]'}], 'phones': 
[{'type': 'work', 'value': '567234890', 'primary': 'True'}], 'gender':
{'type': 'male'}, 'externalIds: [{'type': 'organization', 'value': '123'}]

service.users().insert(body=userinfo).execute()

Этот ответ может быть немного запоздалым, но, надеюсь, он поможет.

person TorTurner    schedule 07.03.2018