Устранить ошибки

API Google Диска возвращает два уровня информации об ошибках:

  • Коды ошибок HTTP и сообщения заголовков.
  • Объект JSON в тексте ответа с дополнительными сведениями, которые помогут вам определить, как обработать ошибку.

Приложения Google Диска должны улавливать и обрабатывать все ошибки, которые могут возникнуть при использовании REST API. В этом руководстве представлены инструкции по устранению определенных ошибок Drive API.

Сводка кода состояния HTTP

Код ошибки Описание
200 - OK Запрос успешен (это стандартный ответ для успешных HTTP-запросов).
400 - Bad Request Запрос не может быть выполнен из-за ошибки клиента в запросе.
401 - Unauthorized Запрос содержит неверные учетные данные.
403 - Forbidden Запрос был получен и понят, но у пользователя нет разрешения на его выполнение.
404 - Not Found Запрошенная страница не найдена.
429 - Too Many Requests Слишком много запросов к API.
500, 502, 503, 504 - Server Errors При обработке запроса возникает непредвиденная ошибка.

400 ошибок

Эти ошибки означают, что запрос был неприемлем, часто из-за отсутствия обязательного параметра.

badRequest

Эта ошибка может возникнуть из-за любой из следующих проблем в вашем коде:

  • Не указано обязательное поле или параметр.
  • Указанное значение или комбинация предоставленных полей недействительны.
  • Вы попытались добавить дубликат родительского файла в файл на Диске.
  • Вы попытались добавить родительский элемент, который создавал бы цикл в графе каталогов.

Следующий образец JSON представляет собой представление этой ошибки:

{
  "error": {
    "code": 400,
    "errors": [
      {
        "domain": "global",
        "location": "orderBy",
        "locationType": "parameter",
        "message": "Sorting is not supported for queries with fullText terms. Results are always in descending relevance order.",
        "reason": "badRequest"
      }
    ],
    "message": "Sorting is not supported for queries with fullText terms. Results are always in descending relevance order."
  }
}

Чтобы исправить эту ошибку, проверьте поле message и соответствующим образом измените свой код.

invalidSharingRequest

Эта ошибка возникает по нескольким причинам. Чтобы определить причину, оцените поле reason возвращенного JSON. Эта ошибка чаще всего возникает из-за:

  • Публикация прошла успешно, но электронное письмо с уведомлением было доставлено неправильно.
  • Изменение списка управления доступом (ACL) для этого пользователя не разрешено.

Поле message указывает фактическую ошибку.

Поделиться удалось, но электронное письмо с уведомлением было доставлено неправильно.

Следующий образец JSON представляет собой представление этой ошибки:

{
  "error": {
    "errors": [
      {
        "domain": "global",
        "reason": "invalidSharingRequest",
        "message": "Bad Request. User message: \"Sorry, the items were successfully shared but emails could not be sent to email@domain.com.\""
      }
    ],
    "code": 400,
    "message": "Bad Request"
  }
}

Чтобы исправить эту ошибку, сообщите пользователю (сообщителю), что ему не удалось поделиться, поскольку электронное письмо с уведомлением не удалось отправить на адрес электронной почты назначения. Пользователь должен убедиться, что у него правильный адрес электронной почты и что он может получать электронную почту.

Изменение ACL не разрешено для этого пользователя

Следующий образец JSON представляет собой представление этой ошибки:

{
  "error": {
    "errors": [
      {
        "domain": "global",
        "reason": "invalidSharingRequest",
        "message": "Bad Request. User message: \"ACL change not allowed.\""
      }
    ],
    "code": 400,
    "message": "Bad Request"
  }
}

Чтобы исправить эту ошибку, проверьте настройки общего доступа домена Google Workspace, которому принадлежит файл. Настройки могут запрещать общий доступ за пределами домена или общий доступ к общему диску может быть запрещен.

401 ошибка

Эти ошибки означают, что запрос не содержит действительный токен доступа.

authError

Эта ошибка возникает, когда срок действия используемого вами токена доступа истек или недействителен. Эта ошибка также может быть вызвана отсутствием авторизации для запрошенных областей. Следующий образец JSON представляет собой представление этой ошибки:

{
  "error": {
    "errors": [
      {
        "domain": "global",
        "reason": "authError",
        "message": "Invalid Credentials",
        "locationType": "header",
        "location": "Authorization",
      }
    ],
    "code": 401,
    "message": "Invalid Credentials"
  }
}

Чтобы исправить эту ошибку, обновите токен доступа, используя долгосрочный токен обновления. Если это не помогло, направьте пользователя через поток OAuth, как описано в разделе «Выбор областей действия API Google Диска» .

403 ошибки

Эти ошибки означают, что превышен лимит использования или у пользователя нет необходимых привилегий. Чтобы определить причину, оцените поле reason возвращенного JSON.

Информацию об ограничениях Drive API см. в разделе Ограничения использования . Информацию об ограничениях папок на Диске см. в разделе Ограничения на файлы и папки .

activeItemCreationLimitExceeded

Ошибка activeItemCreationLimitExceeded возникает, когда превышено ограничение количества элементов, созданных для одной учетной записи. Каждый пользователь может иметь до 500 миллионов элементов, созданных в учетной записи. Дополнительную информацию см. в разделе «Лимит пользовательских элементов» .

{
 "error": {
  "errors": [
   {
    "domain": "global",
    "reason": "activeItemCreationLimitExceeded",
    "message": "This account has exceeded the creation limit of 500 million items. To create more items, permanently delete some items."
   }
  ],
  "code": 403,
  "message": "This account has exceeded the creation limit of 500 million items. To create more items, permanently delete some items."
 }
}

Чтобы исправить эту ошибку:

  1. Сообщите пользователю, что Диск не позволяет учетным записям создавать более 500 миллионов объектов.

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

appNotAuthorizedToFile

Эта ошибка возникает, когда ваше приложение не находится в списке ACL для файла. Эта ошибка не позволяет пользователю открыть файл в вашем приложении. Следующий образец JSON представляет собой представление этой ошибки:

{
  "error": {
    "errors": [
      {
        "domain": "global",
        "reason": "appNotAuthorizedToFile",
        "message": "The user has not granted the app {appId} {verb} access to the file {fileId}."
      }
    ],
    "code": 403,
    "message": "The user has not granted the app {appId} {verb} access to the file {fileId}."
  }
}

Чтобы исправить эту ошибку, попробуйте любое из следующих действий:

  • Откройте средство выбора Google Диска и предложите пользователю открыть файл.
  • Попросите пользователя открыть файл с помощью контекстного меню «Открыть с помощью» в пользовательском интерфейсе Диска вашего приложения.
  • Используйте метод files.get , чтобы проверить поле isAppAuthorized ресурса files , чтобы убедиться, что ваше приложение создало или открыло файл.

cannotModifyInheritedTeamDrivePermission

Эта ошибка возникает, когда пользователь пытается изменить унаследованные разрешения элемента на общем диске. Унаследованные разрешения нельзя удалить для объекта на общем диске. Следующий образец JSON представляет собой представление этой ошибки:

{
  "error": {
    "errors": [
      {
        "domain": "global",
        "reason": "cannotModifyInheritedTeamDrivePermission",
        "message": "Cannot update or delete an inherited permission on a shared drive item."
      }
    ],
    "code": 403,
    "message": "Cannot update or delete an inherited permission on a shared drive item."
  }
}

Чтобы исправить эту ошибку, пользователь должен настроить разрешения для прямого или косвенного родительского элемента, от которого они были унаследованы. Дополнительные сведения см. в разделе Распространение разрешений . Вы также можете получить ресурс permissions.permissionDetails , чтобы узнать, наследуются ли разрешения к этому элементу общего диска или применяются напрямую.

dailyLimitExceeded

Эта ошибка возникает, когда достигнут лимит API для вашего проекта. Следующий образец JSON представляет собой представление этой ошибки:

{
  "error": {
    "errors": [
      {
        "domain": "usageLimits",
        "reason": "dailyLimitExceeded",
        "message": "Daily Limit Exceeded"
      }
    ],
    "code": 403,
    "message": "Daily Limit Exceeded"
  }
}

Эта ошибка появляется, когда владелец приложения установил квоту для ограничения использования определенного ресурса. Чтобы исправить эту ошибку, снимите ограничения на использование квоты «Запросов в день» .

domainPolicy

Эта ошибка возникает, если политика домена пользователя не разрешает вашему приложению доступ к Диску. Следующий образец JSON представляет собой представление этой ошибки:

{
  "error": {
    "errors": [
      {
        "domain": "global",
        "reason": "domainPolicy",
        "message": "The domain administrators have disabled Drive apps."
      }
    ],
    "code": 403,
    "message": "The domain administrators have disabled Drive apps."
  }
}

Чтобы исправить эту ошибку:

  1. Сообщите пользователю, что домен не разрешает вашему приложению доступ к файлам на Диске.
  2. Попросите пользователя связаться с администратором домена, чтобы запросить доступ к вашему приложению.

fileOwnerNotMemberOfTeamDrive

Эта ошибка возникает при попытке переместить файл на общий диск, если владелец файла не является его участником. Следующий образец JSON представляет собой представление этой ошибки:

{
  "error": {
    "errors": [
      {
        "domain": "global",
        "reason": "fileOwnerNotMemberOfTeamDrive",
        "message": "Cannot move a file into a shared drive as a writer when the owner of the file is not a member of that shared drive."
      }
    ],
    "code": 403,
    "message": "Cannot move a file into a shared drive as a writer when the owner of the file is not a member of that shared drive."
  }
}

Чтобы исправить эту ошибку:

  1. Добавьте участника на общий диск с помощью role=owner . Дополнительную информацию см. в разделе Общий доступ к файлам, папкам и дискам .

  2. Добавьте файл на общий диск. Дополнительные сведения см. в разделе Создание и заполнение папок .

fileWriterTeamDriveMoveInDisabled

Эта ошибка возникает, когда администратор домена не разрешил пользователям с role=writer перемещать объекты на общий диск. Пользователь, пытающийся переместить объекты, имеет меньше разрешений, чем разрешено на целевом общем диске. Следующий образец JSON представляет собой представление этой ошибки:

{
  "error": {
    "errors": [
      {
        "domain": "global",
        "reason": "fileWriterTeamDriveMoveInDisabled",
        "message": "The domain administrator has not allowed writers to move items into a shared drive."
      }
    ],
    "code": 403,
    "message": "The domain administrator has not allowed writers to move items into a shared drive."
  }
}

Чтобы исправить эту ошибку, используйте одну и ту же учетную запись администратора на исходном и целевом общих дисках.

insufficientFilePermissions

Эта ошибка возникает, когда у пользователя нет прав на запись в файл, а ваше приложение пытается изменить файл. Следующий образец JSON представляет собой представление этой ошибки:

{
  "error": {
    "errors": [
      {
        "domain": "global",
        "reason": "insufficientFilePermissions",
        "message": "The user does not have sufficient permissions for file {fileId}."
      }
    ],
    "code": 403,
    "message": "The user does not have sufficient permissions for file {fileId}."
  }
}

Чтобы исправить эту ошибку, попросите пользователя связаться с владельцем файла и запросить доступ к редактированию. Вы также можете проверить уровни доступа пользователей в метаданных, полученных методом files.get , и отобразить пользовательский интерфейс, доступный только для чтения, при отсутствии разрешений.

myDriveHierarchyDepthLimitExceeded

Ошибка myDriveHierarchyDepthLimitExceeded возникает, когда превышено ограничение количества уровней вложенных папок. Мой диск пользователя не может содержать более 100 уровней вложенности папок. Дополнительные сведения см. в разделе Ограничение глубины папки .

{
 "error": {
  "errors": [
   {
    "domain": "global",
    "reason": "myDriveHierarchyDepthLimitExceeded",
    "message": "Your My Drive can't contain more than 100 levels of folders. For details, see https://developers.google.com/drive/api/guides/handle-errors#nested-folder-levels."
   }
  ],
  "code": 403,
  "message": "Your My Drive can't contain more than 100 levels of folders. For details, see https://developers.google.com/drive/api/guides/handle-errors#nested-folder-levels."
 }
}

Чтобы исправить эту ошибку:

  1. Сообщите пользователю, что Диск не позволяет размещать папки глубиной более 100 уровней.
  2. Если пользователю необходимо создать еще одну вложенную папку, попросите его реорганизовать предполагаемую родительскую папку так, чтобы она имела глубину менее 100 уровней, или использовать другую родительскую папку, которая уже соответствует требованию.

numChildrenInNonRootLimitExceeded

Эта ошибка возникает, когда превышено ограничение на количество дочерних элементов папки (папок, файлов и ярлыков). Существует ограничение в 500 000 элементов для папок, файлов и ярлыков непосредственно в папке. Элементы, вложенные в подпапки, не учитываются при ограничении в 500 000 элементов. Дополнительную информацию об ограничениях папок на Диске см. в разделе Ограничения папок на Google Диске .

Следующий образец JSON представляет собой представление этой ошибки:

{
 "error": {
  "errors": [
   {
    "domain": "global",
    "reason": "numChildrenInNonRootLimitExceeded",
    "message": "The limit for this folder's number of children (files and folders) has been exceeded."
   }
  ],
  "code": 403,
  "message": "The limit for this folder's number of children (files and folders) has been exceeded."
 }
}

Чтобы исправить эту ошибку, попробуйте любое из следующих действий:

  • Сообщите пользователю, что Диск не позволяет создавать папки, содержащие более 500 000 элементов.
  • Если пользователю необходимо добавить больше элементов в полную папку, попросите его реорганизовать папку, чтобы она содержала менее 500 000 элементов, или использовать аналогичную папку, которая уже содержит меньше элементов.

rateLimitExceeded

Эта ошибка возникает, когда достигнут предел скорости проекта. Этот лимит варьируется в зависимости от типа запроса. Следующий образец JSON представляет собой представление этой ошибки:

{
 "error": {
  "errors": [
   {
    "domain": "usageLimits",
    "message": "Rate Limit Exceeded",
    "reason": "rateLimitExceeded",
   }
  ],
  "code": 403,
  "message": "Rate Limit Exceeded"
 }
}

Чтобы исправить эту ошибку, попробуйте любое из следующих действий:

sharingRateLimitExceeded

Эта ошибка возникает, когда пользователь достигает лимита общего доступа и часто связана с лимитом электронной почты. Следующий образец JSON представляет собой представление этой ошибки:

{
 "error": {
  "errors": [
   {
    "domain": "global",
    "message": "Rate limit exceeded. User message: \"These item(s) could not be shared because a rate limit was exceeded: filename",
    "reason": "sharingRateLimitExceeded",
   }
  ],
  "code": 403,
  "message": "Rate Limit Exceeded"
 }
}

Чтобы исправить эту ошибку:

  1. Не отправляйте электронные письма при совместном использовании большого количества файлов.
  2. Если один пользователь отправляет многочисленные запросы от имени многих пользователей аккаунта Google Workspace, рассмотрите возможность использования сервисного аккаунта с делегированием на уровне домена с помощью параметра quotaUser .

storageQuotaExceeded

Эта ошибка возникает, когда пользователь достигает предела хранилища. Следующий образец JSON представляет собой представление этой ошибки:

{
 "error": {
  "errors": [
   {
    "domain": "global",
    "message": "The user's Drive storage quota has been exceeded.",
    "reason": "storageQuotaExceeded",
   }
  ],
  "code": 403,
  "message": "The user's Drive storage quota has been exceeded."
 }
}

Чтобы исправить эту ошибку:

  1. Проверьте ограничения на объем хранилища в вашей учетной записи Диска. Дополнительную информацию см. в разделе «Ограничения на хранилище и загрузку Google Workspace» .

  2. Управляйте файлами в хранилище Google Диска .

  3. Купите больше места для хранения данных Google .

teamDriveFileLimitExceeded

Эта ошибка возникает, когда пользователь пытается превысить строгий лимит элементов на общем диске. Каждая папка на общем диске пользователя может содержать не более 400 000 элементов, включая файлы, папки и ярлыки. Этот лимит основан на количестве предметов, а не на использовании хранилища. Дополнительную информацию см. в разделе Ограничения общего диска в Google Диске .

Следующий образец JSON представляет собой представление этой ошибки:

{
  "error": {
    "errors": [
      {
        "domain": "global",
        "reason": "teamDriveFileLimitExceeded",
        "message": "The file limit for this shared drive has been exceeded."
      }
    ],
    "code": 403,
    "message": "The file limit for this shared drive has been exceeded."
  }
}

Чтобы исправить эту ошибку, уменьшите количество объектов на общем диске. Общие диски со слишком большим количеством файлов могут быть затруднены при организации и поиске.

teamDriveMembershipRequired

Эта ошибка возникает, когда пользователь пытается получить доступ к общему диску, участником которого он не является. Следующий образец JSON представляет собой представление этой ошибки:

{
  "error": {
    "errors": [
      {
        "domain": "global",
        "reason": "teamDriveMembershipRequired",
        "message": "The attempted action requires shared drive membership."
      }
    ],
    "code": 403,
    "message": "The attempted action requires shared drive membership."
  }
}

Чтобы исправить эту ошибку, попробуйте любое из следующих действий:

  1. Попросите менеджера общего диска добавить вам соответствующие разрешения для действий, которые вы должны выполнить.

  2. Просмотрите роли и разрешения Диска, чтобы узнать, кто может получать доступ к общим дискам и управлять ими. Дополнительную информацию об уровнях доступа также можно найти в разделе Создание общего диска .

teamDrivesFolderMoveInNotSupported

Эта ошибка возникает, когда пользователь пытается переместить папку из «Мой диск» на общий диск. Следующий образец JSON представляет собой представление этой ошибки:

{
  "error": {
    "errors": [
      {
        "domain": "global",
        "reason": "teamDrivesFolderMoveInNotSupported",
        "message": "Moving folders into shared drives is not supported."
      }
    ],
    "code": 403,
    "message": "Moving folders into shared drives is not supported."
  }
}

Чтобы исправить эту ошибку, попробуйте любое из следующих действий:

  • Переместите отдельные элементы из папки на общий диск с помощью Drive API. Установите параметр supportsAllDrives=true , чтобы обозначить поддержку как «Мого диска», так и общих дисков.

  • Если вам необходимо переместить папку на общий диск, используйте пользовательский интерфейс Диска. Дополнительную информацию см. в разделе Перемещение папок на общие диски от имени администратора .

teamDrivesParentLimit

Эта ошибка возникает, когда пользователь пытается добавить более одного родительского объекта к элементу на общем диске. Следующий образец JSON представляет собой представление этой ошибки:

{
  "error": {
    "errors": [
      {
        "domain": "global",
        "reason": "teamDrivesParentLimit",
        "message": "A shared drive item must have exactly one parent."
      }
    ],
    "code": 403,
    "message": "A shared drive item must have exactly one parent."
  }
}

Чтобы исправить эту ошибку, используйте ярлыки Диска, чтобы добавить несколько ссылок на файл. Хотя ярлык может иметь только один родительский элемент, файл ярлыка можно скопировать в дополнительные места. Дополнительную информацию см. в разделе Создание ярлыка для файла на Диске .

UrlLeaseLimitExceeded

Эта ошибка возникает при попытке сохранить данные игры Google Play через ваше приложение. Следующий образец JSON представляет собой представление этой ошибки:

{
 "error": {
  "errors": [
   {
    "domain": "usageLimits",
    "reason": "UrlLeaseLimitExceeded",
    "message": "Too many pending uploads for this snapshot. Please finish or cancel some before creating more."
   }
  ],
  "code": 403,
  "message": "Too many pending uploads for this snapshot. Please finish or cancel some before creating more."
 }
}

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

userRateLimitExceeded

Эта ошибка возникает, когда достигнут лимит на количество пользователей. Это может быть ограничение консоли Google Cloud или ограничение серверной части Диска. Следующий образец JSON представляет собой представление этой ошибки:

{
 "error": {
  "errors": [
   {
    "domain": "usageLimits",
    "reason": "userRateLimitExceeded",
    "message": "User Rate Limit Exceeded"
   }
  ],
  "code": 403,
  "message": "User Rate Limit Exceeded"
 }
}

Чтобы исправить эту ошибку, попробуйте любое из следующих действий:

Информацию об ограничениях Drive API см. в разделе Ограничения использования .

404 ошибки

Эти ошибки означают, что запрошенный ресурс недоступен или не существует.

notFound

Эта ошибка возникает, когда у пользователя нет прав на чтение файла или файл не существует. Следующий образец JSON представляет собой представление этой ошибки:

{
  "error": {
    "errors": [
      {
        "domain": "global",
        "reason": "notFound",
        "message": "File not found {fileId}"
      }
    ],
    "code": 404,
    "message": "File not found: {fileId}"
  }
}

Чтобы исправить эту ошибку:

  1. Если файл расположен на общем диске и вы используете метод files.get , убедитесь, что для параметра запроса supportsAllDrives установлено значение true .
  2. Сообщите пользователю, что у него нет доступа на чтение к файлу или что файл не существует.
  3. Попросите пользователя связаться с владельцем файла и запросить разрешение на доступ к файлу.

429 ошибок

Эти ошибки означают, что в API слишком быстро было отправлено слишком много запросов.

rateLimitExceeded

Эта ошибка возникает, когда пользователь отправил слишком много запросов за определенный промежуток времени. Следующий образец JSON представляет собой представление этой ошибки:

{
  "error": {
    "errors": [
      {
        "domain": "usageLimits",
        "reason": "rateLimitExceeded",
        "message": "Rate Limit Exceeded"
      }
    ],
    "code": 429,
    "message": "Rate Limit Exceeded"s
  }
}

Чтобы исправить эту ошибку, используйте экспоненциальную отсрочку для повторения запроса.

500, 502, 503, 504 ошибки

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

Ниже приведен список ошибок 5xx:

  • 500 Ошибка серверной части
  • 502 Неверный шлюз
  • 503 Сервис недоступен
  • Ошибка 504 Время ответа сервера истекло

Чтобы исправить эту ошибку, используйте экспоненциальную отсрочку для повторения запроса.