В электронной таблице 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 и включил его, поэтому я действительно не знаю, что это может быть.
Ответы
Ответ 1
-
Сначала удалите файлы учетных данных ~/.credentials/sheets.googleapis.com-nodejs-quickstart.json
(в зависимости от настроек)
-
Измените переменную области, используемую для чтения ячеек из таблиц Google, с
var SCOPES = [' https://www.googleapis.com/auth/spreadsheets.readonly '];
в
var SCOPES = [' https://www.googleapis.com/auth/spreadsheets '];
- После выполнения кода 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 Диска перед запуском быстрого запуска электронной таблицы, возможно, существующий токен может не обновлять доступ к электронной таблице.