Код для запуска учетной записи службы Google api oauth
Всем привет,
Мне нужно получить доступ к google sheet из программы winforms. Я хочу, чтобы учетная запись службы google получила доступ к указанному листу без того, чтобы пользователь компьютера когда-либо взаимодействовал с программой. Я считаю, что учетная запись службы способна на это, но если нет, пожалуйста, дайте мне знать.
У меня есть код(ниже) для доступа к листу с идентификатором клиента, но не к учетной записи службы, и код дал мне ошибки, когда я попытался запустить его как учетную запись службы. Мой вопрос заключается в том, может ли кто-нибудь показать мне код/указать мне правильное направление относительно того, как я могу получить доступ к данным из электронной таблицы с помощью учетной записи службы? Большое вам спасибо, и хорошего вам дня! Дайте мне знать, если вам понадобятся разъяснения,
Код:
<pre lang="c#"><pre> private void sheetsSetup() { // sheetID = computerID; printLine("sheets setup"); UserCredential credential; using (var stream = new FileStream("client_secret.json", FileMode.Open, FileAccess.Read)) //get client secret file from <bin> { string credPath = System.Environment.GetFolderPath( System.Environment.SpecialFolder.Personal); credPath = Path.Combine(credPath, ".credentials/sheets.googleapis.com-dotnet-quickstart.json"); //get creds credential = GoogleWebAuthorizationBroker.AuthorizeAsync( GoogleClientSecrets.Load(stream).Secrets, Scopes, "user", CancellationToken.None, new FileDataStore(credPath, true)).Result; Console.WriteLine("Credential file saved to: " + credPath); //get more creds } var service = new SheetsService(new BaseClientService.Initializer() { HttpClientInitializer = credential, ApplicationName = ApplicationName, }); String range = "A2:S"; //take values from A to Z, excluding 1st row SpreadsheetsResource.ValuesResource.GetRequest request = service.Spreadsheets.Values.Get(spreadsheetId, range); ValueRange response = request.Execute(); IList<IList<Object>> values = response.Values; if (values != null && values.Count > 0) { int i = 0; string code15 = ""; foreach (var column in values) { //IMPORTANT: This code gets the wilkyScript /* availableCodes[i] = (column[4].ToString()); richTextBox1.Text += availableCodes[i]; printLine(column[16].ToString()); i++; */ i++; if (column[0].ToString() == sheetID.ToString()) { //printLine("found it at row:" + i +" with code:"+ column[codeColumn]); code15 = column[codeColumn].ToString(); exeStringA = code15; // exeStringB = exeStringA.Split('`'); } } }
Что я уже пробовал:
Как я уже говорил выше, я попробовал идентификатор клиента, но не учетную запись службы. Честно говоря, я понятия не имею, с чего начать, чтобы преобразовать это в сервисное приложение.