使用谷歌电子表格服务与服务帐户

本文关键字:服务 电子表格 谷歌 | 更新日期: 2023-09-27 18:19:03

我需要在Google Drive中对现有的电子表格进行一些更改。我想周期性地做,使用计划过程。因此,我决定使用服务帐户身份验证,如下所述https://developers.google.com/drive/web/delegation

这个例子工作得很好,我可以连接到Plus API,但是我需要连接到谷歌电子表格API。问题是,SpreadsheetsService似乎不工作与p12文件或初始化器类作为DriveService。

SpreadSheetsService只有两种身份验证方法,似乎不需要通过提供的url - SetAuthenticationToken()和setUserCredentials()。没有明显的方法我可以传递p12文件到电子表格服务。

有人解决了这个问题吗?我可以接受任何"肮脏"的解决方案,如解密p12文件(认为我不认为谷歌为此提供密码)或将身份验证头从DriveService到SpreadsheetService。有人解决了这个问题吗?

或者可能有第三方的c#库支持通过服务帐户登录电子表格API ?

谢谢。

使用谷歌电子表格服务与服务帐户

请参阅如何使用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;