#javascript #api #google-chrome-extension #google-sheets-api #api-key
Вопрос:
Это тот самый background.js скрипт моего расширения Chrome. Я пытаюсь получить значение из электронной таблицы с помощью API-интерфейсов Sheets. Лист может быть прочитан кем угодно, поэтому я подумал, что мне не понадобятся никакие разрешения/области действия OAuth2 и вход в систему.
if (message.action == 'clicked') {
if (!connected){
var user = message.user;
var range = 'Teachers!A:A';
let fetch_url = `https://sheets.googleapis.com/v4/spreadsheets/${spreadsheetId}/values/${range}`;
fetch(fetch_url)
.then(res => res.json())
.then(res => {
console.log(res);
})
};
}
Когда я пытаюсь выполнить выборку, я получаю эту ошибку:
error: {code: 403, message: 'The request is missing a valid API key.', status: 'PERMISSION_DENIED'}
Что не так с моей логикой? Разве я не могу избежать необходимости регистрировать людей?
Комментарии:
1. n пользователей будут получать доступ к одному и тому же коду , но ключ требуется для вызова API в коде.
2. @Энди, как я могу вставить этот ключ? Это в заголовке сообщения?
3. Вероятно, в качестве
key
параметра в URL-адресе tihe. Проверьте документацию.
Ответ №1:
Мне нужно было зайти в облачную консоль Google и создать ключ API (и для безопасности лучше ограничить его API Sheets).
Я взял этот ключ, сохранил его как переменную и включил в URL-адрес выборки следующим образом:
let fetch_url = `https://sheets.googleapis.com/v4/spreadsheets/${spreadsheetId}/values/${range}?key=${API_KEY}`;
Сработало!
Ответ №2:
это не ${spreadsheetId}
ключ для чтения, убедитесь, что он связан правильно, потому что эта ошибка возникает, когда вы не предоставляете правильный ключ api
Комментарии:
1. Нет, у меня есть эта переменная, определенная в начале кода за пределами параметра состояния if