使用.Net访问带有服务帐户的Google Sheets会生成一个;调用者没有权限[403]”;错误
我正在使用.Net(并且我已经安装了NuGet软件包)使用服务帐户访问Google Sheets。我有一个谷歌API帐户,创建了服务帐户,甚至还有一个测试表。我已经包含了JSON文件,该文件描述了我从创建的服务帐户下载的凭据。除了使用Execute方法调用时出现以下错误外,所有操作似乎都正常: 调用方没有权限[403]消息[调用方没有权限] 拥有权限]位置[-]原因[禁止]域[全局] 在使用.Net访问带有服务帐户的Google Sheets会生成一个;调用者没有权限[403]”;错误,.net,api,service,google-sheets,account,.net,Api,Service,Google Sheets,Account,我正在使用.Net(并且我已经安装了NuGet软件包)使用服务帐户访问Google Sheets。我有一个谷歌API帐户,创建了服务帐户,甚至还有一个测试表。我已经包含了JSON文件,该文件描述了我从创建的服务帐户下载的凭据。除了使用Execute方法调用时出现以下错误外,所有操作似乎都正常: 调用方没有权限[403]消息[调用方没有权限] 拥有权限]位置[-]原因[禁止]域[全局] 在Google.api.Requests.ClientServiceRequest`1.d\u 34.MoveN
Google.api.Requests.ClientServiceRequest`1.d\u 34.MoveNext()
我也为服务帐户打开了全局访问,但它仍然不起作用。我试图将服务帐户与工作表共享,但似乎没有任何方法可以做到这一点
我的代码如下所示:
string[] Scopes = { SheetsService.Scope.SpreadsheetsReadonly };
string ApplicationName = "My Unit Test";
GoogleCredential sac;
using (var stream = new FileStream("credentials.json", FileMode.Open, FileAccess.Read))
{
sac = GoogleCredential.FromStream(stream).CreateScoped(Scopes);
}
// Create Google Sheets API service.
var service = new SheetsService(new BaseClientService.Initializer()
{
HttpClientInitializer = sac,
ApplicationName = ApplicationName,
});
String spreadsheetId = "1_aeTu4YxDKrqDBvCNR1awyo_7WDha0JBVo1jLxsz3pA";
String range = "Export!A2:E";
SpreadsheetsResource.ValuesResource.GetRequest request = service.Spreadsheets.Values.Get(spreadsheetId, range);
ValueRange response = request.Execute(); // Exception thrown here
我需要执行成功登录和访问谷歌工作表我设置。有人看到了吗?或者知道解决方法吗?没有人回应,我自己找到了解决方法。我用于测试的gmail帐户是一个专门的工作域。它不允许我正确地共享该表。因此,我建立了一个新的谷歌帐户,在中添加了所有的API和服务帐户。已将适当的角色添加到服务帐户。生成了新的json私钥。使用新帐户创建了一个工作表,并与新的服务帐户共享它…它可以工作。重要的是,您必须与服务帐户共享该工作表,否则它将不起作用