- Вы хотите использовать учетную запись службы для возобновляемой загрузки на Диск.
- Вы хотите, чтобы владельцем видео была не учетная запись службы, а обычная учетная запись с достаточным объемом памяти на Диске. емкость.
Если это верно, то вы можете просто делегировать полномочия на уровне домена учетной записи службы, чтобы она могла действовать от имени любого пользователя в домене и при загрузке файла , олицетворяйте учетную запись, которую вы хотите сделать владельцем файла.
Делегирование полномочий на уровне домена:
Процесс предоставления полномочий на уровне домена объясняется здесь :
- На странице Учетные записи служб выберите свою учетную запись службы, и при редактировании SA щелкните
SHOW DOMAIN-WIDE DELEGATION
и на только что отображаемом содержании отметьте опцию Включить делегирование G Suite на уровне домена . - После этого go в консоли администратора , а затем go в Главное меню > Безопасность> API Contro ls .
- Выберите Управление делегированием в пределах домена на панели Делегирование в пределах домена и нажмите Добавить новый .
- Заполните соответствующие поля: (1) в Client ID введите SA Client ID , который вы можете найти как в файле учетных данных JSON, так и в учетной записи службы. page и (2) в областях OAuth добавьте области, соответствующие ресурсам, к которым SA должен обращаться от имени пользователей в домене. В этом случае, я полагаю, это просто
https://www.googleapis.com/auth/drive
. - После нажатия Авторизовать вы предоставили учетной записи службы возможность доступа к ресурсам от имени любого пользователя в домене.
Выдача себя за другого пользователя:
Теперь учетная запись службы выдает себя за любого пользователя в домене, но вы должны указать, какого пользователя вы хотите, чтобы она выдала себя. Для этого вам просто нужно внести небольшое изменение в свой код. Прямо сейчас вы устанавливаете service_account_email
при делегировании учетных данных через create_delegated
:
delegated_credentials = credentials.create_delegated('service_account_email')
То есть учетная запись службы действует от имени учетной записи службы. Если вы не хотите выдавать себя за другую учетную запись, в этой строке кода не было бы реальной необходимости (она не имеет никакого эффекта, поскольку credentials
и delegated_credentials
оба относятся к одной и той же учетной записи (учетной записи службы) .
Но поскольку вы хотите использовать учетную запись службы для действий от имени другой учетной записи, вы должны указать адрес электронной почты этой другой учетной записи в этой строке:
delegated_credentials = credentials.create_delegated('user_account_email')
Это единственное изменение вам нужно сделать в своем коде. Если вы предоставили делегирование для всего домена, учетная запись службы будет действовать так, как если бы это был другой пользователь. Это будет похоже на то, что это был другой пользователь, который загрузил файл, поэтому этот пользователь будет владелец файла.
Примечание.
- Вы используете устаревшую библиотеку (
oauth2client
). Поскольку она все еще работает, настоящих необходимо сделать это сейчас, но рассмотрите возможность изменения кода на google-auth .
Ссылка: