我需要对Google云端硬盘中的现有电子表格进行一些更改。我希望使用预定流程定期执行此操作。因此我决定使用服务帐户身份验证,此处将对此进行说明https://developers.google.com/drive/web/delegation
示例工作正常,我可以连接到Plus API,但是我需要连接到Google Spreadsheet API。问题是SpreadsheetsService似乎不像DriveService那样使用p12文件或Initializer类。
SpreadSheetsService只有2种身份验证方法,似乎不需要提供url - SetAuthenticationToken()和setUserCredentials()。没有明显的方法可以将p12文件传递给SpreadsheetService。
有人解决了这个问题吗?我对任何"脏"像解密p12文件这样的解决方案(以为我不认为谷歌为此提供密码)或将认证标题从DriveService放到SpreadsheetService。有人解决了这个问题吗?
或者也许C#的第三方库支持通过服务帐户登录Spreadsheet API?
感谢。
答案 0 :(得分:1)
请参阅How to use SpreadsheetsService authenticated by ServiceAccountCredential?
ServiceAccountCredential credential = new ServiceAccountCredential(
new ServiceAccountCredential.Initializer(ServiceAccount) {
Scopes = new[] {DriveService.Scope.Drive,"https://spreadsheets.google.com/feeds"}
}.FromCertificate(certificate)
);
bool success = credential.RequestAccessTokenAsync(System.Threading.CancellationToken.None).Result;
....
SpreadsheetsService spreadsheetsService = new SpreadsheetsService(applicationName);
var requestFactory = new Google.GData.Client.GDataRequestFactory(applicationName);
requestFactory.CustomHeaders.Add(string.Format("Authorization: Bearer {0}", credential.Token.AccessToken));
spreadsheetsService.RequestFactory = requestFactory;