google.auth.exceptions.RefreshError: ('access_denied: учетная запись ограничена' с использованием делегированной учетной записи домена) - PullRequest
0 голосов
/ 27 апреля 2020

Я пытаюсь использовать делегирование домена для учетной записи службы, чтобы получить некоторую информацию от администратора SDK для создания отчетов. я получил уже работающую кодовую базу, которую я использую с доменом gsuite. Я хотел использовать тот же код для создания отчетов для другого домена, поэтому я настроил проект GCP для этого другого домена. я создал учетную запись службы, включил делегирование домена в ней и включил области действия для учетной записи службы. Когда я пытаюсь сделать любой вызов API, выдавая себя за любую учетную запись в домене, я получаю следующую ошибку

adminService.activities().list(userKey='all', applicationName='meet').execute()
google.auth.exceptions.RefreshError: ('access_denied: Account restricted', '{\n  "error": "access_denied",\n  "error_description": "Account restricted",\n  "error_uri":<url>}')

вот код, который я использую для создания службы

credentials = service_account.Credentials.from_service_account_file(credentialsPath,
    scopes=['https://www.googleapis.com/auth/admin.reports.audit.readonly',
    "https://www.googleapis.com/auth/classroom.announcements.readonly",
    "https://www.googleapis.com/auth/classroom.courses.readonly",
    "https://www.googleapis.com/auth/classroom.coursework.students.readonly",
    "https://www.googleapis.com/auth/classroom.profile.emails",
    "https://www.googleapis.com/auth/classroom.rosters.readonly",
    "https://www.googleapis.com/auth/classroom.student-submissions.students.readonly",
    "https://www.googleapis.com/auth/classroom.topics.readonly"
    ])

    delegated_credentials = credentials.with_subject(email)

    return build('admin', 'reports_v1', credentials=delegated_credentials)

Опять же, это не должно быть проблемой программирования, так как тот же самый точный код работает для другого домена, я думаю, что я что-то упускаю на стороне конфигурации администратора / GCP, но я не могу понять что, и я не нашел этот точный ошибка в любом месте целого rnet

1 Ответ

0 голосов
/ 28 апреля 2020

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

, что примерно переводится как «дополнительные услуги без индивидуального контроля» в организационной единице для которому принадлежит пользователь, создавший проект GCP. Вы можете сделать это с помощью всплывающей подсказки, которая появляется в верхней части страницы Приложения> Дополнительные сервисы Google в панели администрирования

...