我有一个MVC Web应用程序,可以更新电子商务网站上的产品。现在,我们注册了Google商人中心,我的目标是同时更新产品。我正在使用Google.Apis.ShoppingContent.v2_1 API。
这是我的API凭证
这是我的API服务帐户
我已经为用户以及服务帐户电子邮件使用了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 \ n用户无法访问帐户123456789 [401] \ r \ nErrors [\ r \ n \ tMessage [用户无法访问帐户123456789]位置[-]原因[auth / account_access_denied]域[content.ContentErrorDomain] \ r \ n] \ r \ n“
最佳答案
Documentaiton
服务帐户是特殊的Google帐户,应用程序可以通过OAuth 2.0以编程方式访问Google API。服务帐户使用不需要人工授权的OAuth 2.0流。相反,它使用只有您的应用程序可以访问的密钥文件。本指南讨论了如何使用服务帐户访问Content API for Shopping。
服务帐户需要预先授权。如果不是,则它无权访问任何数据。
用户无法访问帐户123456789
意味着它没有访问权限,而您忘记授予它访问权限。检查Documentaiton查找以下部分的所有步骤。
关于c# - 使用p12 key 进行身份验证时出现错误用户无法访问帐户,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/56321202/