2016-11-10 3 views
1

Если вы используете Google Apps for Work (также называемый G-Suite) и загружаете файлы на свой Google Диск с помощью API-интерфейса Drive, вы в конечном итоге найдете с сообщением об ошибке, которое выглядит так:Как устранить проблему с превышением объема хранилища для Google Диска при загрузке с использованием учетных записей служб

Error: The user's Drive storage quota has been exceeded. 

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

ответ

2

фона:

Google Drive API разрешается с помощью "учетных записей служб", а не обычные "человеческие" пользователей. В настоящее время у Google нет возможности увеличить лимит на 15 ГБ для учетных записей служб, и нет механизма для покупки дополнительного места. После того, как вы воспользуетесь стандартным распределением пространства, вам будет запрещено загружать дополнительные файлы.

Человеческие/обычные пользователи G-Suite также получают стандартную 15 ГБ, но с простыми опциями, чтобы увеличить ее до 100 ГБ или более за простые копейки.

Итак, как вы загружаете файлы против квоты хранилища учетной записи пользователя, а не учетной записи службы, чтобы вы могли иметь столько места, сколько хотите? Это действительно просто! Просто не очень хорошо документированы ...

Решение:

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

Prep: Это важно. Carefully review the instructions here to make sure your service account is set up correctly for impersonation. Любое отклонение от этого даст вам случайные ошибки, которые могут помешать вам и тратить время. Учетная запись службы должна иметь DwD (доменное делегирование) в Google IAM Console. И ему должно быть разрешено получить доступ к области Диска на странице доступа клиента API к Google Admin site.

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

В NodeJS это выглядит следующим образом (обратите внимание на последний параметр):

let jwtClient = new GoogleApi.auth.JWT( service_account_email, null, private_key, ['https://www.googleapis.com/auth/drive'], '[email protected]');

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

Когда ваш скрипт API Диска теперь загружает файлы, они будут принадлежать этому постоянному пользователю, и пространство будет выделено из их квоты. Увеличение этого тривиально и может выполняться любым администратором или путем обращения в службу поддержки G-Suite.