API Gmail возвращает информацию об ошибках двух уровней:
- Коды и сообщения об ошибках HTTP в заголовке.
- В теле ответа содержится JSON-объект с дополнительными сведениями, которые помогут определить, как обработать ошибку.
Приложения Gmail должны перехватывать и обрабатывать все ошибки, которые могут возникнуть при использовании REST API. В этом руководстве приведены инструкции по устранению конкретных ошибок API.
Устранение ошибки 400: Неверный запрос
Эта ошибка может быть вызвана следующими ошибками в вашем коде:
- Не указано обязательное поле или параметр.
- Указанное значение или комбинация указанных полей недопустимы.
- Недействительное вложение.
Ниже приведен пример 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 и внесите соответствующие изменения в свой код.
Устранение ошибки 401: Неверные учетные данные
Ошибка 401 указывает на то, что используемый вами токен доступа либо просрочен, либо недействителен. Эта ошибка также может быть вызвана отсутствием авторизации для запрошенных областей действия. Ниже приведено JSON-представление этой ошибки:
{
"error": {
"errors": [
{
"domain": "global",
"reason": "authError",
"message": "Invalid Credentials",
"locationType": "header",
"location": "Authorization",
}
],
"code": 401,
"message": "Invalid Credentials"
}
}
Для устранения этой ошибки обновите токен доступа, используя долгосрочный токен обновления. Если вы используете клиентскую библиотеку, она автоматически обрабатывает обновление токена. Если это не удается, направьте пользователя через процесс OAuth, как описано в разделе «Авторизация вашего приложения с помощью Gmail» .
Для получения дополнительной информации об ограничениях Gmail см. раздел «Ограничения использования» .
Устранение ошибки 403: Превышен лимит использования
Ошибка 403 возникает, когда превышен лимит использования или у пользователя отсутствуют необходимые права доступа. Чтобы определить конкретный тип ошибки, оцените поле reason в возвращаемом JSON. Эта ошибка возникает в следующих ситуациях:
- Суточный лимит был превышен.
- Превышен лимит количества запросов от пользователей.
- Лимит ставок по проекту был превышен.
- Ваше приложение нельзя использовать в домене авторизованного пользователя.
Для получения дополнительной информации об ограничениях Gmail см. раздел «Ограничения использования» .
Устранение ошибки 403: Превышен дневной лимит
Ошибка dailyLimitExceeded указывает на то, что для вашего проекта достигнут лимит использования API. Ниже приведено JSON-представление этой ошибки:
{
"error": {
"errors": [
{
"domain": "usageLimits",
"reason": "dailyLimitExceeded",
"message": "Daily Limit Exceeded"
}
],
"code": 403,
"message": "Daily Limit Exceeded"
}
}
Чтобы исправить эту ошибку:
- Перейдите в консоль Google API.
- Выберите свой проект.
- Нажмите вкладку «Квоты» .
- Запросить дополнительную квоту. Для получения более подробной информации см. раздел «Запросить дополнительную квоту» .
Для получения дополнительной информации об ограничениях Gmail см. раздел «Ограничения использования» .
Устранение ошибки 403: Превышен лимит запросов пользователей.
Ошибка userRateLimitExceeded указывает на то, что достигнут лимит для каждого пользователя. Ниже приведено JSON-представление этой ошибки:
{
"error": {
"errors": [
{
"domain": "usageLimits",
"reason": "userRateLimitExceeded",
"message": "User Rate Limit Exceeded"
}
],
"code": 403,
"message": "User Rate Limit Exceeded"
}
}
Для устранения этой ошибки попробуйте оптимизировать код приложения, уменьшив количество запросов или повторив запросы. Информацию о повторных запросах см. в разделе «Повторные запросы, завершившиеся неудачей, для устранения ошибок» .
Для получения дополнительной информации об ограничениях Gmail см. раздел «Ограничения использования» .
Устранение ошибки 403: Превышен лимит запросов.
Ошибка rateLimitExceeded указывает на то, что пользователь достиг максимального количества запросов к API Gmail. Этот лимит варьируется в зависимости от типа запросов. Ниже приведено JSON-представление этой ошибки:
{
"error": {
"errors": [
{
"domain": "usageLimits",
"message": "Rate Limit Exceeded",
"reason": "rateLimitExceeded",
}
],
"code": 403,
"message": "Rate Limit Exceeded"
}
}
Для устранения этой ошибки повторите неудачные запросы .
Для получения дополнительной информации об ограничениях Gmail см. раздел «Ограничения использования» .
Устранена ошибка 403: Приложение с идентификатором {appId} не может использоваться в домене авторизованного пользователя.
Ошибка domainPolicy возникает, когда политика для домена пользователя не разрешает доступ вашего приложения к Gmail. Ниже приведено JSON-представление этой ошибки:
{
"error": {
"errors": [
{
"domain": "global",
"reason": "domainPolicy",
"message": "The domain administrators have disabled Gmail apps."
}
],
"code": 403,
"message": "The domain administrators have disabled Gmail apps."
}
}
Чтобы исправить эту ошибку:
- Сообщите пользователю, что домен не позволяет вашему приложению получить доступ к Gmail.
- Попросите пользователя связаться с администратором домена, чтобы запросить доступ к вашему приложению.
Устранение ошибки 429: Слишком много запросов
Ошибка 429 «Слишком много запросов» может возникать из-за ежедневных лимитов для каждого пользователя (включая лимиты на отправку почты), лимитов пропускной способности или лимита на количество одновременных запросов для каждого пользователя. Информация о каждом лимите приведена ниже. Однако каждый лимит можно устранить либо повторной отправкой неудачных запросов , либо распределением обработки между несколькими учетными записями Gmail. Лимиты для каждого пользователя не могут быть увеличены ни по какой причине. Для получения дополнительной информации о лимитах см. раздел «Лимиты использования» .
Ограничения на отправку почты
API Gmail устанавливает стандартные ежедневные лимиты на отправку почты. Эти лимиты различаются для платных пользователей Google Workspace и пользователей пробной версии gmail.com. Информацию об этих лимитах см. в разделе «Лимиты отправки Gmail в Google Workspace» .
Эти ограничения действуют для каждого пользователя и распространяются на все его клиенты, будь то API-клиенты, нативные/веб-клиенты или SMTP MSA. При превышении этих лимитов возвращается ошибка HTTP 429 Too Many Requests "User-rate limit exceeded" "(Mail sending)" с указанием времени повторной попытки. Обратите внимание, что превышение суточных лимитов может привести к появлению подобных ошибок в течение нескольких часов, прежде чем запрос будет принят.
Процесс отправки почты сложен: как только пользователь превышает свою квоту, может возникнуть задержка в несколько минут, прежде чем API начнет возвращать ошибки 429. Поэтому нельзя предполагать, что ответ 200 означает успешную отправку письма.
Ограничения пропускной способности
API устанавливает для каждого пользователя ограничения на пропускную способность для загрузки и скачивания, которые равны, но не зависят от протокола IMAP. Эти ограничения действуют для всех клиентов Gmail API для данного пользователя.
Эти лимиты обычно достигаются только в исключительных или неправомерных ситуациях. Если эти лимиты превышены, возвращается ошибка HTTP 429 Too Many Requests "User-rate limit exceeded" с указанием времени повторной попытки. Обратите внимание, что превышение суточных лимитов может привести к появлению подобных ошибок в течение нескольких часов, прежде чем запрос будет принят.
Одновременные запросы
API Gmail устанавливает ограничение на количество одновременных запросов для каждого пользователя (в дополнение к ограничению на количество запросов для каждого пользователя). Это ограничение распространяется на все клиенты API Gmail, обращающиеся к данному пользователю, и гарантирует, что ни один клиент API не перегружает почтовый ящик пользователя Gmail или его серверную часть.
Выполнение множества параллельных запросов к одному пользователю или отправка пакетов с большим количеством запросов может вызвать эту ошибку. Большое количество независимых API-клиентов, одновременно обращающихся к почтовому ящику пользователя Gmail, также может вызвать эту ошибку. Если этот лимит превышен, возвращается ошибка HTTP 429 Too Many Requests "Слишком много одновременных запросов к пользователю".
Устранение ошибки 500: ошибка на стороне бэкэнда
backendError возникает, когда при обработке запроса появляется непредвиденная ошибка.
{
"error": {
"errors": [
{
"domain": "global",
"reason": "backendError",
"message": "Backend Error",
}
],
"code": 500,
"message": "Backend Error"
}
}
Для устранения этой ошибки повторите неудачные запросы . Ниже приведён список ошибок с кодом 500:
- 502 Неверный шлюз
- Сервис 503 недоступен
- 504 Таймаут шлюза
Повторите неудачные запросы для устранения ошибок.
Для обработки ошибок, связанных с ограничениями скорости, объемом сети или временем ответа, можно периодически повторять неудачный запрос с увеличивающимся интервалом времени. Например, можно повторить неудачный запрос через одну секунду, затем через две секунды, а затем через четыре секунды. Этот метод называется экспоненциальной задержкой и используется для повышения эффективности использования полосы пропускания и максимизации пропускной способности запросов в средах с параллельным доступом.
Повторные попытки следует начинать не позднее чем через одну секунду после возникновения ошибки.
Просмотр или изменение лимитов использования, увеличение квоты
Чтобы просмотреть или изменить лимиты использования для вашего проекта, или запросить увеличение квоты, выполните следующие действия:
- Если у вас еще нет платежного аккаунта для вашего проекта, создайте его.
- Перейдите на страницу «Включенные API» в библиотеке API в консоли API и выберите API из списка.
- Чтобы просмотреть и изменить настройки, связанные с квотами, выберите «Квоты» . Чтобы просмотреть статистику использования, выберите «Использование» .
Пакетные запросы
Рекомендуется использовать пакетную обработку запросов, однако большие пакеты, скорее всего, приведут к ограничению скорости запросов. Отправка пакетов, содержащих более 50 запросов, не рекомендуется. Информацию о пакетной обработке запросов см. в разделе «Пакетная обработка запросов» .