Я пытался получить доступ к Googles Mybusiness API, но он кажется немного сложнее, чем указано в документации.
Я создал служебную учетную запись, у которой есть доступ ко всему, что я могу придумать, но при попытке подключиться или получить доступ к API-ресурсу я получаю сообщение об ошибке:
'Error:"invalid_request", Description:"Invalid impersonation prn email address.", Uri:""'
Насколько я могу судить, это означает, что учетная запись службы не имеет разрешения выдавать себя за учетную запись, настроенную в качестве администратора в Google My Business.
Почти во всех результатах поиска, которые я нахожу, упоминается, что служебная учетная запись должна быть администратором G Suite. Ни учетная запись службы, ни администратор GMB не участвуют в настройках, связанных с G Suite, поэтому даже добавление этого разрешения к учетной записи службы не оказывает никакого влияния.
Как предоставить доступ к API для учетной записи службы?
Я пробовал несколько способов подключения. Использование сертификата было единственным, где я смог добавить имя пользователя, пользователя, которого я хотел выдать за себя:
var certificate = new X509Certificate2(System.IO.Path.Combine(path, p12FileName), "notasecret", X509KeyStorageFlags.MachineKeySet | X509KeyStorageFlags.Exportable);
var initializer = new ServiceAccountCredential.Initializer(serviceAccount)
{
Scopes = new[] { "https://www.googleapis.com/auth/plus.business.manage" },
User = user,
};
var credential = new ServiceAccountCredential(initializer.FromCertificate(certificate))
{
};
var myBusinessService = new MyBusinessService(new BaseClientService.Initializer()
{
HttpClientInitializer = credential,
});