Google Sheet API error 调用者没有权限
Google Sheet API error The caller does not have permission
我正在尝试使用 .net 核心控制台应用程序中的服务帐户访问 google sheet。我可以从我的个人帐户中阅读 google sheet。它没有问题。但是尝试在组织域中访问 google sheet,它说没有权限访问 sheet。
我已与服务帐户共享 google sheet。
GoogleCredential credential;
using(var stream = new FileStream("client_secret.json",FileMode.Open,FileAccess.Read))
{
credential = GoogleCredential.FromStream(stream).CreateScoped(Scopes);
}
service = new SheetsService(new Google.Apis.Services.BaseClientService.Initializer()
{
HttpClientInitializer = credential,
ApplicationName = ApplicationName,
});
var range = $"{Sheet}!A:F";
var request = service.Spreadsheets.Values.Get(SpreadsheetId, range);
var response = request.Execute();
但是它在执行时抛出权限错误。有什么方法可以使用组织域进行访问吗?是不是因为组织限制用户只能访问组织域中的文件
您获得访问权限的原因是由于组织的政策,您也陈述了自己的原因。
服务帐户是应用程序而非个人使用的一种特殊帐户,与用户帐户不同,它们不属于您的 Google Workspace 域。
一种方法是使用服务帐户来委派域范围的权限。这是什么意思?好吧,从本质上讲,您最终会在 具有 访问 sheet 的域中模拟用户,并通过服务帐户对该用户执行请求。
但是,对此服务帐户的访问权限需要由域管理员而非普通用户授予。可以找到执行此操作的步骤 here.
参考
我正在尝试使用 .net 核心控制台应用程序中的服务帐户访问 google sheet。我可以从我的个人帐户中阅读 google sheet。它没有问题。但是尝试在组织域中访问 google sheet,它说没有权限访问 sheet。 我已与服务帐户共享 google sheet。
GoogleCredential credential;
using(var stream = new FileStream("client_secret.json",FileMode.Open,FileAccess.Read))
{
credential = GoogleCredential.FromStream(stream).CreateScoped(Scopes);
}
service = new SheetsService(new Google.Apis.Services.BaseClientService.Initializer()
{
HttpClientInitializer = credential,
ApplicationName = ApplicationName,
});
var range = $"{Sheet}!A:F";
var request = service.Spreadsheets.Values.Get(SpreadsheetId, range);
var response = request.Execute();
但是它在执行时抛出权限错误。有什么方法可以使用组织域进行访问吗?是不是因为组织限制用户只能访问组织域中的文件
您获得访问权限的原因是由于组织的政策,您也陈述了自己的原因。
服务帐户是应用程序而非个人使用的一种特殊帐户,与用户帐户不同,它们不属于您的 Google Workspace 域。
一种方法是使用服务帐户来委派域范围的权限。这是什么意思?好吧,从本质上讲,您最终会在 具有 访问 sheet 的域中模拟用户,并通过服务帐户对该用户执行请求。
但是,对此服务帐户的访问权限需要由域管理员而非普通用户授予。可以找到执行此操作的步骤 here.