Недостаточные области проверки подлинности при записи в электронную таблицу из .NET - PullRequest
0 голосов
/ 19 сентября 2018

Попытка написать в гугл листы из .NET.

Получено исключение:

An unhandled exception of type 'Google.GoogleApiException' occurred in mscorlib.dll

Additional information: Google.Apis.Requests.RequestError

Request had insufficient authentication scopes. [403]

Errors [

    Message[Request had insufficient authentication scopes.] Location[ - ] Reason[forbidden] Domain[global]

]

Аналоговая функция с чтением работает нормально.Учетные данные созданы, и API листов Google включен.Я не вижу никаких настроек при создании учетных данных, касающихся чтения / записи.Электронная таблица предназначена для всех, кто читает / пишет.Как решить эту проблему?

static void UpdateEntry()
        {
            string  spreadsheetId = "1IAD2okAWZD7anbt5L4ybgD2dxHBGmsY6IkNIWHBQkBM";
            string ApplicationName = "myapp";
            UserCredential credential;

            using (var stream = new FileStream("credentials_1.json", FileMode.Open, FileAccess.Read))
            {
                string credPath = "token.json";
                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,
            });




            String range = "new first sheet!A1"; 
            //var range = "{sheet}!D543";
            var valueRange = new ValueRange();

            var oblist = new List<object>() { "updated" };
            valueRange.Values = new List<IList<object>> { oblist };

            var updateRequest = service.Spreadsheets.Values.Update(valueRange, spreadsheetId, range);
            updateRequest.ValueInputOption = SpreadsheetsResource.ValuesResource.UpdateRequest.ValueInputOptionEnum.USERENTERED;
            var appendReponse = updateRequest.Execute();
        }
...