Member 13424692 Ответов: 0

Код для запуска учетной записи службы 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('`');
                    }

                }
            }


Что я уже пробовал:

Как я уже говорил выше, я попробовал идентификатор клиента, но не учетную запись службы. Честно говоря, я понятия не имею, с чего начать, чтобы преобразовать это в сервисное приложение.

0 Ответов