У меня есть учетная запись службы 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>"
}
https://drive.google.com/drive/folders/<drive_id>
- person Squirrel623   schedule 21.04.2021