Аутентификация с ключом p12 дает ошибку. Пользователь не может получить доступ к учетной записи. - PullRequest
2 голосов
/ 27 мая 2019

У меня есть веб-приложение MVC, которое обновляет продукты на сайте электронной коммерции. Теперь мы зарегистрировались в Google Merchant Center, и моя цель - обновить продукты одновременно. Я использую API Google.Apis.ShoppingContent.v2_1.

Это мои учетные данные API API Credentials

Это моя учетная запись службы API API Credentials 2

Я использовал адрес электронной почты учетной записи Google для пользователя, а также адрес электронной почты учетной записи службы, но с тем же результатом.

У меня есть следующее

    static string[] Scopes = { ShoppingContentService.Scope.Content};
    static string P12Secret =  @"~\Content\XXXXXX-5cab03fb904a.p12";
    static string userName = "serviceaccount@gserviceaccount.com";
    static public async Task RunTest2()
        {
            var certificate = new X509Certificate2(P12Secret, "notasecret", X509KeyStorageFlags.MachineKeySet | X509KeyStorageFlags.Exportable);
            var credential = new ServiceAccountCredential(new ServiceAccountCredential.Initializer(userName)
            {
                Scopes = Scopes
            }.FromCertificate(certificate));

            var service = new ShoppingContentService(new BaseClientService.Initializer
            {
                ApplicationName = ApplicationName,
                HttpClientInitializer = credential
            });

            try
            {
                var result = await service.Products.List("My MerchantID").ExecuteAsync();
            }
            catch (Exception e)
            {
                Console.WriteLine(e.Message);
            }
        }

Когда я выполняю var result = await service.Products.List ("My MerchantID"). ExecuteAsync (); Я получаю ошибку

e.Message = "Google.Apis.Requests.RequestError \ nUser не может получить доступ к учетной записи 123456789 [401] \ r \ nErrors [\ r \ n \ tMessage [Пользователь не может получить доступ к учетной записи 123456789] Местоположение [-] Причина [auth / account_access_denied] Домен [content.ContentErrorDomain] \ r \ n] \ r \ n "

1 Ответ

1 голос
/ 27 мая 2019

Документация

Сервисные учетные записи - это специальные учетные записи Google, которые могут использоваться приложениями для программного доступа к API Google через OAuth 2.0.Учетная запись службы использует поток OAuth 2.0, который не требует человеческой авторизации.Вместо этого он использует файл ключа, к которому имеет доступ только ваше приложение.В этом руководстве рассказывается, как получить доступ к Content API for Shopping с учетными записями служб.

Необходимо предварительно авторизовать учетные записи служб.Если его нет, то он не имеет доступа к каким-либо данным.

Пользователь не может получить доступ к учетной записи 123456789

Означает, что у него нет доступа, о котором вы забыли предоставить ему доступ.Проверьте Документация , посмотрите раздел ниже, выполните все шаги.

enter image description here

...