Google API недостаточно разрешений

Я пытаюсь добавить пользователя Gmail в группу, используя API Google в Python. Вот мой код:

from __future__ import print_function
import httplib2
import os
from apiclient import discovery
from oauth2client import client
from oauth2client import tools
from oauth2client.file import Storage

try:
    import argparse
    flags = argparse.ArgumentParser(parents=[tools.argparser]).parse_args()
except ImportError:
    flags = None

# If modifying these scopes, delete your previously saved credentials
# at ~/.credentials/admin-directory_v1-python-quickstart.json
SCOPES = 'https://www.googleapis.com/auth/admin.directory.group'
CLIENT_SECRET_FILE = 'client_secret1.json'
APPLICATION_NAME = 'Directory API Python Quickstart'
GROUP = '[email protected]'


def get_credentials():
    home_dir = os.path.expanduser('~')
    credential_dir = os.path.join(home_dir, '.credentials')
    if not os.path.exists(credential_dir):
        os.makedirs(credential_dir)
    credential_path = os.path.join(credential_dir,
                                   'admin-directory_v1-python-quickstart.json')

    store = Storage(credential_path)
    credentials = store.get()
    if not credentials or credentials.invalid:
        flow = client.flow_from_clientsecrets(CLIENT_SECRET_FILE, SCOPES)
        flow.user_agent = APPLICATION_NAME
        if flags:
            credentials = tools.run_flow(flow, store, flags)
        else: # Needed only for compatibility with Python 2.6
            credentials = tools.run(flow, store)
        print('Storing credentials to ' + credential_path)
    return credentials

def main():
    credentials = get_credentials()
    http = credentials.authorize(httplib2.Http())
    service = discovery.build('admin', 'directory_v1', http=http)

    groupinfo = {'email': '[email protected]',
                  'role': 'MEMBER',
                  }
    service.members().insert(groupKey=GROUP, body=groupinfo).execute()


if __name__ == '__main__':
    main()

Всякий раз, когда я запускаю это, я получаю следующую ошибку:

HttpError: <HttpError 403 when requesting https://www.googleapis.com/admin/directory/v1/groups/customerservice
%40zego.com/members?alt=json returned "Insufficient Permission">

До сих пор я сделал следующее, чтобы устранить эту проблему:

  1. Я протестировал код быстрого запуска из Google, и он сработал.
  2. Я попробовал игровую площадку oauth, ввел те же данные json, и это сработало.

Я не уверен, в чем именно здесь проблема. Область действия правильная (работает на игровой площадке oauth), код кажется правильным (запрос работает на игровой площадке oauth). Единственное, о чем я могу думать, это тип запроса? Буду признателен за любую помощь. Спасибо.


comment
Похоже, у ваших учетных данных нет разрешения от Google делать то, что вы пытаетесь сделать. По крайней мере, так говорится в сообщении об ошибке. Вы проверили документацию Google API или спросили на одном из их форумов?   -  person barny    schedule 20.03.2018
comment
Я администратор и могу создавать/удалять/управлять пользователями и группами. Я могу сделать это с панели консоли.   -  person davidb    schedule 20.03.2018
comment
это то, что говорит сообщение об ошибке. Неверие собственным глазам не поможет.   -  person barny    schedule 20.03.2018
comment
Я это понимаю. Я все еще озадачен, почему это не работает с добавлением пользователей в группы с моей учетной записью, в то время как другой скрипт работает нормально (где я создаю пользователей). На данный момент я попросил Google помочь в этом. Спасибо.   -  person davidb    schedule 20.03.2018


Ответы (2)


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

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

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

person DaImTo    schedule 20.03.2018
comment
Я администратор и могу свободно добавлять и удалять пользователей из консоли. - person davidb; 20.03.2018
comment
Админ запускает ваш скрипт? Я думаю, вам следует попробовать повторить аутентификацию еще раз, чтобы убедиться, что вы не вошли в систему с неправильным пользователем. - person DaImTo; 20.03.2018
comment
У меня есть только учетная запись администратора. Я попытался повторно аутентифицироваться, но все равно. Код выглядит нормально, да? Думаю, мне нужно будет связаться с Google напрямую. - person davidb; 20.03.2018
comment
это выглядит хорошо, даже прицел выглядит корректно. googleapis.com/auth/admin.directory.group Ошибка означает, что вы не имеют разрешения. Значит, что-то не так с пользователем, под которым вы входите. Вы пробовали вставить другого пользователя, может с ним что-то не так - person DaImTo; 20.03.2018

Я наконец-то понял. Я использовал некоторые старые учетные данные, и, как показывает код, они хранились внутри

~/.credentials

Что не сработало. Я просто изменил каталог на папку, в которой хранятся все мои файлы:

./.credentials

Запустил это снова, и это сработало. Спасибо, ребята, за вашу помощь.

person davidb    schedule 21.03.2018