Подтвердить что ты не робот

В электронной таблице Google api Request были недостаточно области проверки подлинности

Я делаю script для чтения данных из электронной таблицы google, используя следующий script on nodejs:

var url = oauth2Client.generateAuthUrl({
    access_type:     'offline',
    approval_prompt: 'force',
    scope: [
      'https://www.googleapis.com/auth/analytics.readonly',
      'https://www.googleapis.com/auth/drive',
      'https://www.googleapis.com/auth/spreadsheets'
    ]
});
global.googleapis = { expiry_date: 0 };
google.options({ auth: oauth2Client });
var sheets    = google.sheets('v4');
sheets.spreadsheets.get({ spreadsheetId: 'id'}, function(err, data) {
    res.send(err, data);
});

Но при каждом запросе на получение я получаю эту ошибку:

Request had insufficient authentication scopes.

Я проверил консоль разработчиков Google, чтобы включить API Диска Google и включил его, поэтому я действительно не знаю, что это может быть.

4b9b3361

Ответ 1

  1. Сначала удалите файлы учетных данных ~/.credentials/sheets.googleapis.com-nodejs-quickstart.json (в зависимости от настроек)

  2. Измените переменную области, используемую для чтения ячеек из таблиц Google, с

var SCOPES = [' https://www.googleapis.com/auth/spreadsheets.readonly '];

в

var SCOPES = [' https://www.googleapis.com/auth/spreadsheets '];

  1. После выполнения кода API снова будет аутентифицироваться, и тогда проблема будет решена.

Ответ 2

Области выглядят хорошо, возможно, вам стоит попытаться удалить учетные данные, хранящиеся ранее в /Users/yourUserName/.credentials/sheets.googleapis.com-projectName/*, а затем снова выполнить приложение для получения новых учетных данных.

Ответ 3

Во-первых, убедитесь, что вы также включили листы API в своей консоли разработчика.

insufficient authentication scopes - ошибка в токене OAuth 2.0, указанная в запросе, указывает области действия > , которые недостаточны для доступа к запрошенным данным.

Поэтому убедитесь, что вы используете правильную и всю необходимую область и проверяете этот Авторизация запросов с OAuth 2.0, если вы правильно выполните шаги здесь.

Наконец, попробуйте отменить доступ и попытаться его переделать.

Для получения дополнительной информации проверьте этот связанный вопрос SO:

Ответ 4

Та же проблема возникла, когда я обновил область. Наряду с инструкцией я удаляю файл token.json в том же каталоге со скриптом python, после чего проблема с областью аутентификации исчезла.

Ответ 5

Я долго искал учетные данные. Многие участники форума упоминали, что он будет находиться в каталоге c:\users\.credentials\google-api ****. Json Но я нигде не мог их найти. Затем я понял, что моя программа создала файл token.pickle прямо в каталоге программы .py, который по сути является файлом учетных данных.

Ответ 6

В моем случае файл token.pickle был создан в том же рабочем каталоге, что и моя программа, у меня также был файл credentials.json в том же каталоге, все, что я сделал, это удалил файл token.pickle, затем изменил область действия, затем запустил это снова, это снова попросит аутентификацию в вашем браузере и что это, это работает.

Мой фрагмент кода, как показано ниже, я создавал файл рассола, поэтому мне пришлось удалить его перед изменением области действия

    if os.path.exists('token.pickle'):
    with open('token.pickle', 'rb') as token:
        creds = pickle.load(token)
    # If there are no (valid) credentials available, let the user log in.
    if not creds or not creds.valid:
        if creds and creds.expired and creds.refresh_token:
            creds.refresh(Request())
        else:
            flow = InstalledAppFlow.from_client_secrets_file(
                'credentials.json', SCOPES)
            creds = flow.run_local_server()
        # Save the credentials for the next run
        with open('token.pickle', 'wb') as token:
            pickle.dump(creds, token)

Ответ 7

Удалите токен из папки токенов и повторите попытку. Если вы попытались запустить быстрый запуск Google Диска перед запуском быстрого запуска электронной таблицы, возможно, существующий токен может не обновлять доступ к электронной таблице.