Как мне разрешить доступ к учетной записи google-сервиса google без учета приложений Google?

Я бы хотел использовать Google Диск для работы в качестве квази-CMS для веб-сайта, который я делаю, чтобы владельцы контента могли редактировать свой контент с помощью Google Диска. Я хотел бы использовать определенную учетную запись пользователя, которая имеет доступ к Google Диску (с момента написания этого сообщения, учетные записи служб НЕ имеют прямого доступа к Google Диску) и может обмениваться документами с владельцами контента.

Прочитав API и учебники, я нашел ответ в делегировании: https://developers.google.com/drive/delegation

Моя основная проблема с этим процессом заключается в том, что веб-сайт не управляется Google Apps, и поэтому шаги, описанные в разделе «Делегировать полномочия домена на вашу учетную запись службы», меня путают – похоже, должно быть возможно обработать эту делегацию без использования Google Приложения, но после поиска настроек в Google Диске для моей учетной записи пользователя я не могу найти способ авторизации олицетворения.

Фрагмент кода, который я использую:

static public function getService() { $key = file_get_contents(GOOGLEAPI_KEYFILE); $auth = new Google_AssertionCredentials(GOOGLEAPI_SERVICE_EMAIL, array(GOOGLEAPI_SCOPE), $key); $auth->setPrn(GOOGLEAPI_IMPERSONATION); self::$apiClient = new Google_Client(); self::$apiClient->setUseObjects(true); self::$apiClient->setAssertionCredentials($auth); return new Google_DriveService(self::$apiClient); } 

GOOGLEAPI_IMPERSONATION – это конкретная учетная запись пользователя, и когда я запускаю этот код, исключение:

Ошибка обновления токена OAuth2, сообщение: '{"error": "access_denied"}

Кто-нибудь предлагает какую-либо помощь? Не понимаю ли я фундаментальную концепцию того, как oAuth работает с точки зрения делегирования?

Учетные записи служб предназначены для двух разных случаев:

  • Авторизация приложения / процесса для аутентификации и вызова служб с использованием собственной идентификации. Подумайте о таких сервисах, как прогнозирование, облачное хранилище и т. Д., Где данные принадлежат приложению.
  • Выступать за пользователей в домене приложений Google, где администратор домена может предварительно авторизовать приложение, действующее от имени пользователей в своем домене.

Олицетворение работает для доменов Google Apps, поскольку администраторы имеют механизм авторизации приложения вне диапазона для своих пользователей через панель управления. Разумеется, они могут только авторизовать приложение для доступа к данным для своих учетных записей. Для отдельных пользователей, не входящих в организацию, приложениям необходимо использовать обычные потоки OAuth для запроса авторизации от каждого пользователя.

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