Ошибка при попытке олицетворения учетной записи при доступе к API Google (для моего бизнеса) - PullRequest
0 голосов
/ 14 мая 2018

Я пытался получить доступ к 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,
        });
...