Создание пользователей в домене google (python)

Я создаю приложение, в котором я получаю файл Client_secret.json, и в своем приложении я пытаюсь загрузить этот файл json и получить от него учетные данные, используя следующий код:

credentials=get_credentials(filename)
http = credentials.authorize(httplib2.Http())
service = discovery.build('admin', 'directory_v1', http=http)
userinfo = {'primaryEmail': primaryEmail,
    'name': { 'givenName':user },
    'password': password
}
service.users().insert(body = userinfo).execute()

Это дает следующую ошибку:

httpError 403 при запросе https://www.googleapis.com/admin/directory/v1/users?alt=json вернул недостаточное разрешение

Я не уверен, что я делаю неправильно, или я что-то упускаю? Мне было интересно, проблема в файле json, который я создаю?

Любая помощь будет оценена по достоинству.

Спасибо, Аман


person Community    schedule 03.04.2018    source источник
comment
Что вы пытаетесь сделать с этим кодом? Я не думаю, что возможно программно создавать учетные записи Google за пределами домена приложений.   -  person    schedule 03.04.2018
comment
@duskwuff Я делаю графический интерфейс, который будет принимать CSV-файл и создавать пользователей в каталоге Google (Admin ----›users), чтобы нам не приходилось создавать их вручную. Когда я пытаюсь создать пользователей, у меня всегда возникают проблемы с разрешениями. Не совсем уверен, как это решить.   -  person    schedule 03.04.2018


Ответы (2)


Ну, вы можете начать с проверки нескольких вещей:

  1. Если вы используете учетную запись службы, обязательно включите «параметр делегирования широкого домена», чтобы разрешить учетной записи службы доступ к пользовательским данным от имени ваших пользователей и выполнение операций.

  2. Проверьте, авторизована ли область https//www.googleapis.com/admin/directory/v1/users для вашего идентификатора клиента в консоли администратора Google > Безопасность > Дополнительные настройки > Аутентификация > Управление доступом клиента API.

  3. Проверьте, имеет ли пользователь, которого вы используете для вставки нового пользователя, достаточные привилегии, например привилегии суперадминистратора.

  4. Проверьте, активен ли Admin SDK API в вашем проекте.

Имейте в виду, что просто загрузить client_json и активировать API недостаточно, чтобы разрешить эти типы операций. Для некоторых API, таких как Admin SDK, пользователь, которого вы собираетесь использовать для использования этих служб, должен иметь определенные привилегии.

Вот несколько полезных ссылок

https://developers.google.com/identity/protocols/OAuth2ServiceAccount#delegatingauthority https://support.google.com/a/answer/162106?hl=ru

person Daniel_dev    schedule 04.04.2018
comment
Спасибо за информацию. Я не уверен, что делаю это правильно. Итак, я выполнил следующие шаги для создания пользователей в каталоге Google: Goto API и Services, и, поскольку я буду использовать Admin SDk для создания пользователей, я создаю там учетные данные OAuth. Затем я ссылаюсь на этот файл здесь, учетные данные=get_credentials(файл OAUTH_Client_Secret), а затем я http = учетные данные.authorize(httplib2.Http()) service = discovery.build('admin', 'directory_v1', http=http) service.users ().insert(body=userinfo).execute() - person ; 04.04.2018
comment
@AmanKahlon, если он выдает ошибку, то по определению вы делаете это неправильно. Сначала убедитесь, что вы можете создать пользователя с помощью Try This API . Как только это сработает, попробуйте использовать ту же учетную запись через код Python. - person tehhowch; 04.04.2018
comment
@tehhowch да, я могу создать пользователя с помощью этого API - person ; 04.04.2018
comment
@AmanKahlon Я думаю, что для SDK администратора вы должны олицетворять свои учетные данные с помощью служебной учетной записи с достаточными привилегиями, чтобы вставить нового пользователя в ваш домен, по этим ссылкам ниже показано, как это сделать с помощью python developers.google.com/admin-sdk/directory/v1/guides/delegation developers.google.com/api-client-library/python/auth/ - person Daniel_dev; 04.04.2018

Я бы сначала проверил, чтобы убедиться, что у вас есть правильные права администратора для учетной записи, для которой вы пытаетесь использовать учетные данные OAuth. Я бы попробовал войти в аккаунт и перейти на эту справочную страницу в Directory API для Users:insert

https://developers.google.com/admin-sdk/directory/v1/reference/users/insert

С правой стороны вы должны перейти в раздел Попробуйте этот API и посмотреть, есть ли у этой учетной записи разрешения на создание новых пользователей.

Также я заметил еще одну вещь: вы не устанавливаете обязательное поле familyName внутри поля name. familyName является обязательным свойством.

person ScottMcC    schedule 04.04.2018
comment
Спасибо за информацию. Добавлено имя семьи, так как это обязательное поле. Я не уверен, что делаю это правильно. Итак, я выполнил следующие шаги для создания пользователей в каталоге Google: Goto API и Services, и, поскольку я буду использовать Admin SDk для создания пользователей, я создаю там учетные данные OAuth. Затем я ссылаюсь на этот файл здесь, учетные данные=get_credentials(файл OAUTH_Client_Secret), а затем я http = учетные данные.authorize(httplib2.Http()) service = discovery.build('admin', 'directory_v1', http=http) service.users ().insert(body=userinfo).execute() это правильно? - person ; 04.04.2018