Удаление пароля (ов) для конкретного приложения с помощью Google Directory API

Я написал / автоматизировал весь наш процесс завершения для пользователя, использующего API-интерфейс Google Directory (т. Е. Изменил пароль, перешел в другое подразделение и т. Д.). Все это прекрасно работает, однако я заметил, что когда я использую " Удалить приложение, специфичное для пользователя" Пароль"вызов, что никакие ASP фактически не удаляются. Когда я проверяю в админ-панели, они все еще присутствуют в учетной записи пользователя.

Я делаю около дюжины других вызовов API Google в скрипте (это работает), так что нет, это не проблема разрешения / области действия. Во время ASP-части скрипта не выдается никаких ошибок. Он просто "обрабатывает" вызов и продолжает. Очень странно.

Когда я использую раздел "Попробуйте этот API" в Google, он работает нормально и удаляет указанный мной ASP.

Кто-нибудь еще испытывает эту проблему?

Вот раздел соответствующего кода:

scopes = ['https://www.googleapis.com/auth/admin.directory.user.security',
            'https://www.googleapis.com/auth/admin.directory.user',
            'https://www.googleapis.com/auth/gmail.settings.sharing',
            'https://www.googleapis.com/auth/gmail.modify',
            'https://www.googleapis.com/auth/admin.datatransfer',
            'https://www.googleapis.com/auth/admin.directory.group']

credentials = ServiceAccountCredentials.from_json_keyfile_name('../service-account-key.json', scopes=scopes)

delegated_credentials = credentials.create_delegated('REDACTED')
http_auth = delegated_credentials.authorize(Http())

directory_service = discovery.build('admin', 'directory_v1', http=http_auth)

def remove_asps():
    ##############################################################################################################################
    '''
    REMOVE ALL APP SPECIFIC PASSWORDS
    '''
    ##############################################################################################################################
    asp = directory_service.asps().list(userKey='{0}'.format(user_email)).execute()
    app_specific_passwords = asp.get('items', [])

    print('3) Removing App Specific Passwords:')
    if not app_specific_passwords:
        print('- {0} does not have any App Specific Passwords to remove.'.format(user_email))
        print('')
    else:
        for app_specific_password in app_specific_passwords:
            print('- Removing App Specific Password - {0} from {1}'.format(app_specific_password['name'],user_email))
            delete_asps = directory_service.asps().delete(userKey='{0}'.format(user_email),codeId='{0}'.format(app_specific_password['codeId']))
            print('Done.')
            print('')

Я также попытался жестко запрограммировать значения в вызове и удалить цикл for вместо использования переменных, и это тоже не работает.

Журналы показывают, что вызов выполняется, но никаких ошибок не выдается:

googleapiclient.discovery: INFO     URL being requested: DELETE https://www.googleapis.com/admin/directory/v1/users/redacted_email/asps/0?
googleapiclient.discovery: INFO     URL being requested: DELETE https://www.googleapis.com/admin/directory/v1/users/redacted_email/asps/1?
googleapiclient.discovery: INFO     URL being requested: DELETE https://www.googleapis.com/admin/directory/v1/users/redacted_email/asps/2?

Заранее спасибо за помощь!

0 ответов

Другие вопросы по тегам