В запросе отсутствует действительный ключ API — Google Листы

#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