Я пытаюсь прочитать фид из учетной записи Сайтов Google (приложения Google) в .net.
Я делаю это на стороне сервера, поэтому я создал свой ClientID в качестве «Сервисной учетной записи» в «консоли API Google» и включил делегирование по всему домену для сервисной учетной записи .
Я добавил этот идентификатор клиента и область действия (https://sites.google.com/feeds/)) на страницу " Управление доступом клиента API " в моей панели управления приложениями Google.
Теперь, когда я использую эту служебную учетную запись для доступа к каналу, появляется сообщение об ошибке «Нет прав доступа к этому каналу».
Работает только тогда, когда учетная запись службы олицетворяет пользователя домена.
ServiceAccountCredential credential = new ServiceAccountCredential(new ServiceAccountCredential.Initializer(serviceAccountEmail) { Scopes = scopes, User = "abc@domainName.com"}.FromCertificate(certificate));
Итак, мои вопросы:
1) Почему не работает только передача служебной учетной записи?
2) Есть ли способ, посредством которого учетная запись службы может выдавать себя за 1 учетную запись пользователя домена. Это потому, что если мой код взломан, он может получить доступ к конфиденциальным данным на сайтах.
3) Существует ли какой-либо другой подход, с помощью которого доступ на чтение / запись к сайтам Google может быть получен со стороны сервера без какого-либо вмешательства пользователя.
Я сослался на следующие сообщения во время моего анализа:
Подключение к API Сайтов Google в качестве «Сервисной учетной записи»
Google_Service_Directory - (403) Не авторизован для доступа к этому ресурсу / api