Общий диск Google внезапно возвращает ошибку 404 со служебной учетной записью

У меня есть учетная запись службы Google Cloud Platform с включенным делегированием домена и https://www.googleapis.com/auth/drive областью действия.

До недавнего времени у сервера, использующего эту учетную запись, не было проблем с подключением к трем разным дискам, созданием папок под ними или возвратом содержимого папки. Сервер использовал эту учетную запись с начала / середины 2020 года, и эти вызовы API долгое время работали правильно.

Теперь сервер получает сообщение 404 при попытке создать папки под диском или перечислить содержимое каталога под диском. Диск и эти папки определенно существуют - я могу получить к ним доступ на веб-странице Google Диска. Это наводит меня на мысль, что это проблема с разрешениями, но я ничего не нашел при поиске. Ничего не изменилось в отношении учетной записи службы или нашего сервера, о которых я знаю.

Это код для создания папки под диском, который теперь возвращает 404 и сообщает мне, что диск не существует (для этого я использую google-api-python-client. У меня есть отправил им проблему, но я не верю, что это проблема с библиотекой):

file_metadata = {
    'name':  name,
    'mimeType': 'application/vnd.google-apps.folder',
    'parents': [drive_id]
}

file = service.files().create(body=file_metadata, fields='id', supportsAllDrives=True).execute()

И вот возвращенная ошибка:

{
  "domain": "global",
  "location": "fileId",
  "locationType": "parameter",
  "message": "File not found: <drive_id>",
  "reason": "notFound"
}

Кроме того, это проблема только для двух из трех дисков, к которым подключается этот сервер. Один по-прежнему работает правильно, поэтому я понятия не имею, что изменилось, чтобы вызвать эту проблему с двумя из трех дисков. Я думаю, что это началось только в последние несколько недель, потому что мои пользователи уведомляли меня только за последние несколько недель, а страница показателей не показывает никаких проблем до 12-го числа (но я могу видеть только последние 30 дней):

Страница показателей

Документация Google по этому поводу не помогает решить проблему: https://developers.google.com/drive/api/v3/handle-errors#resolve_a_404_error_file_not_found_fileid

Может ли кто-нибудь помочь мне разобраться в этом или указать правильное направление?

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

{
  "type": "service_account",
  "project_id": "<project_id>",
  "private_key_id": "<private_key_id>",
  "private_key": "<private_key>",
  "client_email": "<service_account_client_email>",
  "client_id": "<service_account_client_id>",
  "auth_uri": "https://accounts.google.com/o/oauth2/auth",
  "token_uri": "https://oauth2.googleapis.com/token",
  "auth_provider_x509_cert_url": "https://www.googleapis.com/oauth2/v1/certs",
  "client_x509_cert_url": "https://www.googleapis.com/robot/v1/metadata/x509/<url_encoded_service_account_email>"
}

comment
Пожалуйста, включите полное сообщение об ошибке. Обратите внимание, что родители - это не идентификатор диска. Родители - это идентификатор папки.   -  person DaImTo    schedule 21.04.2021
comment
Более того, можете ли вы подтвердить, что передаете правильный идентификатор? @ Squirrel623   -  person ale13    schedule 21.04.2021
comment
Кто когда-либо закрыл голосование, проголосовал за это, поскольку сеть должна выяснить, что такое аутентификация учетной записи службы с помощью Google oauth.   -  person DaImTo    schedule 21.04.2021
comment
@DaIm Сожалею, я должен был включить ошибку с самого начала. Я отредактировал исходный пост с ошибкой.   -  person Squirrel623    schedule 21.04.2021
comment
@ ale13 Да, я подтвердил, что идентификатор диска, который я передаю в примере, совпадает с идентификатором, который я вижу при просмотре общего диска в https://drive.google.com/drive/folders/<drive_id>   -  person Squirrel623    schedule 21.04.2021


Ответы (1)


Извините, что потратили время напрасно - проблема, похоже, заключалась в том, что учетная запись службы была удалена у участников диска пользователем, который не знал, что они делают. Я не был разработчиком, который настраивал это, и у меня нет опыта работы с API Google Диска, поэтому я не знал, что нужно проверять участников диска для учетной записи службы.

Для других, у кого может быть такая же проблема:

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

Вы можете проверить https://admin.google.com/ac/reporting/audit/drive и отфильтруйте Event name: Shared Drive Membership Change, чтобы увидеть, кто удалил сервисный аккаунт.

person Squirrel623    schedule 21.04.2021