У меня есть разработанное мной приложение, использующее несколько таблиц Google.
Мне удалось выяснить, как получить доступ к Google Sheets API, используя следующий код:
UserCredential credential;
using (var stream =
new FileStream("client_secret.json", FileMode.Open, FileAccess.Read))
{
string credPath = System.Environment.GetFolderPath(
System.Environment.SpecialFolder.Personal);
credential = GoogleWebAuthorizationBroker.AuthorizeAsync(
GoogleClientSecrets.Load(stream).Secrets,
Scopes,
"user",
CancellationToken.None,
new FileDataStore(credPath, true)).Result;
Console.WriteLine("Credential file saved to: " + credPath);
}
// Create Google Sheets API service.
var service = new SheetsService(new BaseClientService.Initializer()
{
HttpClientInitializer = credential,
ApplicationName = ApplicationName,
});
Это приложение будет использовать еще несколько человек - но при первом запуске приложения оно просит их войти в Google, но их учетные записи не дают им соответствующего доступа.
Я думаю (поправьте меня, если я ошибаюсь) - использование учетной записи службы должно решить мою проблему и больше не предлагать пользователю «войти в систему», но все же позволяет моему приложению правильно читать / обновлять таблицы.
Я хотел бы взять свой существующий код и изменить его для использования учетной записи службы, но я не могу найти никакой хорошей документации о том, как это сделать. Я создал учетную запись службы, и файл ServiceAccount.json находится в том же месте, что и текущий файл client_secret.json, но я не уверен, что делать дальше.
Я попытался изменить код на:
ServiceAccountCredential credential;
//UserCredential credential;
using (var stream =
new FileStream("HelperServiceAccount.json", FileMode.Open, FileAccess.Read))
{
string credPath = System.Environment.GetFolderPath(
System.Environment.SpecialFolder.Personal);
credential = GoogleWebAuthorizationBroker.AuthorizeAsync(
GoogleClientSecrets.Load(stream).Secrets,
Scopes,
"user",
CancellationToken.None,
new FileDataStore(credPath, true)).Result;
)
Console.WriteLine("Credential file saved to: " + credPath);
}
// Create Google Sheets API service.
var service = new SheetsService(new BaseClientService.Initializer()
{
HttpClientInitializer = credential,
ApplicationName = ApplicationName,
});
Но не получается - учетная переменная выдает ошибку.
Любые идеи?