Недостаточно прав для создания группы gmail с использованием Google Directory API

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

SCOPES = 'https://www.googleapis.com/auth/admin.directory.group'
store = file.Storage('token.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()))

mdig = createetag();

reqbody = {
    "kind": "admin#directory#group",
    "id": "id065468",
    "etag": "%s" % mdig,
    "email": "[email protected]",
    "name": "Grptest name",
    "directMembersCount": "2",
    "description": "Grptest",
    "adminCreated": "True",
    "aliases": [
        "[email protected]",
        "[email protected]"
    ],
    "nonEditableAliases": [
    ]
}

# Call the Admin SDK Directory API
print('Creating new group')
group = service.groups()
g = group.insert(body=reqbody).execute()

У меня не появилось окно аутентификации в моем браузере, не уверен, что это вызывает проблему. Это моя ошибка:

'kind': 'admin#directory#group', 'id': 'id065468', 'etag': "b'\\x9fR\\xe9O\\x93\\x84\\xbe~\\x19\\xef\\xd2DYJ`\\x1d'", 'email': '[email protected]', 'name': 'Grptest name', 'directMembersCount': '2', 'description': 'Grp test', 'adminCreated': 'True', 'aliases': ['[email protected]', '[email protected]'],'nonEditableAliases': []

Creating new group

Traceback (most recent call last):
File ".\creategrp.py", line 105, in <module> main()
File".\creategrp.py", line 75, in main 
    g = group.insert(body=reqbody).execute()
File "C:\dev\cfehome\lib\googleapiclient\_helpers.py", line 130, in positional_wrapper
    return wrapped(*args, **kwargs)
File "C:\dev\cfehome\lib\googleapiclient\http.py", line 849, in execute 
    raise HttpError(resp, content, uri=self.uri)
googleapiclient.errors.HttpError: <HttpError 403 when requesting https://www.googleapis.com/admin/directory/v1/groups?alt=json returned "Insufficient Permission">



Ответы (2)


Группы: вставка требует https://www.googleapis.com/auth/admin.directory.group области действия для использования Это. Кроме того, пользователь, с которым вы прошли аутентификацию, должен иметь доступ, чтобы делать то, что вы пытаетесь сделать. Похоже, ваш код использует правильную область.

«Недостаточное разрешение»

Может означать одно из двух. Либо

  • пользователь, которого вы аутентифицируете, не имеет доступа к тому, что вы пытаетесь сделать
  • вы изменили область действия с тех пор, как пользователь вошел в систему.

вариант первый:

Убедитесь, что пользователь, под которым вы входите, имеет доступ администратора к учетной записи gsuite. или вы можете проверить сервисные аккаунты ниже.

Второй вариант:

Я не разработчик Python, но я знаю о библиотеке, которую вы используете. Когда пользователь входит в файл учетных данных для пользователя в каталоге, обозначенном stored store = file.Storage('token.json'). Делая это, когда пользователь возвращается снова, вам не нужно просить его снова войти в систему. Если вы изменили область действия, вам нужно найти этот файл и удалить его. Он должен появиться и снова запросить ваше согласие.

Сервисный аккаунт

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

Документация клиента Google Api Python -> Использование OAuth 2.0 для сервер-сервер Приложения

person DaImTo    schedule 12.12.2018
comment
Я думаю, что это вариант 1: пользователь, которого я аутентифицирую, не имеет доступа. Вы знаете, как предоставить пользователю доступ к gsuite. Связано ли это с включением Admin SDK API на панели пользователя? - person vesa; 12.12.2018
comment
Я не уверен, что мог бы подумать, что это больше связано с тем, какой уровень доступа у этого пользователя в Gsuite. - person DaImTo; 12.12.2018
comment
Admin SDK lets administrators of enterprise domains to view and manage resources like user, groups etc. It also provides audit and usage reports of domain. Я нашел это об Admin SDK. Я включил его, удалил token.json, снова попытался выйти, но он говорит «Недостаточно разрешений». - person vesa; 12.12.2018
comment
googleapiclient.errors.HttpError: returned "Domain not found."> Хорошо, теперь я получил эту ошибку. - person vesa; 12.12.2018
comment
Я пытался отправить со своего Gmail на два других письма, но пишет, что домен не найден. - person vesa; 12.12.2018
comment
Не знаю, почему я это понял, создал новые кредитные данные и файлы токенов с правильной ОБЛАСТЬЮ. - person vesa; 12.12.2018

У учетных данных, которые вы используете, нет разрешений. Это вызвано одним или несколькими факторами, связанными с делегированием G Suite на уровне домена и/или олицетворением учетных данных сервисного аккаунта (отсутствием).

  1. Вам необходимо создать учетную запись службы. Не модифицируйте и не изменяйте никаких разрешений.
  2. Вам необходимо делегировать полномочия всего домена учетной записи службы.
  3. Используя учетные данные сервисной учетной записи, вы выдаете себя за другого пользователя с правами суперадминистратора домена, который хотя бы один раз вошел в G Suite и принял условия.

Начните с этого документа о делегировании домена G Suite:

Делегирование полномочий на уровне домена G Suite

person John Hanley    schedule 12.12.2018