Как запустить функцию Google App Script из Google OAuth 2.0 Playground | Звонящий не имеет разрешения
Я создал новый скрипт, который создает форму Google в моей учетной записи Google. Ниже приведен пример кода:
function myFunction() {
var form = FormApp.create('New Form');
var item = form.addCheckboxItem();
item.setTitle('What condiments would you like on your hot dog?');
item.setChoices([
item.createChoice('Ketchup'),
item.createChoice('Mustard'),
item.createChoice('Relish')
]);
form.addMultipleChoiceItem()
.setTitle('Do you prefer cats or dogs?')
.setChoiceValues(['Cats','Dogs'])
.showOtherOption(true);
form.addPageBreakItem()
.setTitle('Getting to know you');
form.addDateItem()
.setTitle('When were you born?');
form.addGridItem()
.setTitle('Rate your interests')
.setRows(['Cars', 'Computers', 'Celebrities'])
.setColumns(['Boring', 'So-so', 'Interesting']);
Logger.log('Published URL: ' + form.getPublishedUrl());
Logger.log('Editor URL: ' + form.getEditUrl());
}
Затем создайте исполняемый файл API, перейдя в "Публикация"> "Развернуть как исполняемый файл API".
Теперь, если я выполню код прямо из скрипта Google App, он отлично работает, и форма также создается.
Теперь я столкнулся с проблемой при выполнении кода из Google OAuth 2.0 Playground. Для этого я выполнил следующие шаги:
- Посетите https://console.developers.google.com/ и создайте новый проект.
- В левом меню выберите "Библиотека"
В библиотеке скриптов приложений найдите "API скриптов приложений" и включите его.
Затем перейдите в меню учетных данных и нажмите "Создать учетные данные"> Идентификатор клиента OAuth.
На следующем экране выберите Веб-приложение.
Введите имя нового веб-приложения
В поле "Авторизованные источники JavaScript" установите " http://localhost/"
В поле "URI авторизованного перенаправления" установите " https://developers.google.com/oauthplayground", так как в настоящее время нам потребуется ответ на запрос аутентификации в Google OAuth Playground. И нажмите "Создать".
В случае успеха вы получите "Идентификатор клиента" и "Секрет клиента" своей учетной записи, которые вы будете предоставлять в Google OAuth Playground для аутентификации приложения других пользователей.
Теперь зайдите на https://developers.google.com/oauthplayground и нажмите на "Настройки". В раскрывающемся меню установите флажок "Использовать свои собственные учетные данные OAuth" и введите "Идентификатор клиента OAuth" и "Секрет клиента OAuth", полученные на шаге 9.
Затем в разделе "Шаг 1 выберите и авторизуйте API" выберите "API скриптов приложений v1", а затем выберите параметр " https://www.googleapis.com/auth/forms" и нажмите "Авторизовать".
Затем он запросит авторизацию учетной записи, для которой вы хотите получить доступ к выбранной области. В этом я использую ту же учетную запись, на которой создается "Сценарий приложения" для создания кода, и та же, из которой генерируются "Идентификатор клиента" и "Секрет клиента".
Приведенный выше шаг сгенерирует "Код авторизации", и далее вы можете сгенерировать "Токен обновления" и "Токен доступа".
Затем мы должны использовать сервисы для выполнения кода скрипта приложения Google. Нажмите "Список возможных операций", а затем выберите "Выполнить сценарии".
- Введите идентификатор скрипта в PlayGround, а затем установите тело запроса, нажав кнопку "Ввести тело запроса". Чтобы понять параметры тела запроса, обратитесь к документу https://developers.google.com/apps-script/api/reference/rest/v1/scripts/run
- Теперь нажмите на "Отправить запрос"
Выполнив все вышеперечисленные шаги, мы получаем следующую ошибку аутентификации:
POST /v1/scripts/{ScriptId}:run HTTP/1.1
Host: script.googleapis.com
Content-length: 95
Content-type: application/json
Authorization: Bearer {your authentication}
{
"function": "myFunction",
"parameters": [],
"sessionState": "Test",
"devMode": true
}
HTTP/1.1 403 Forbidden
Content-length: 126
X-xss-protection: 1; mode=block
X-content-type-options: nosniff
Transfer-encoding: chunked
Vary: Origin, X-Origin, Referer
Server: ESF
-content-encoding: gzip
Cache-control: private
Date: Fri, 26 Oct 2018 13:44:57 GMT
X-frame-options: SAMEORIGIN
Alt-svc: quic=":443"; ma=2592000; v="44,43,39,35"
Content-type: application/json; charset=UTF-8
{
"error": {
"status": "PERMISSION_DENIED",
"message": "The caller does not have permission",
"code": 403
}
}
Спасибо за решение заранее.
1 ответ
Чтобы решить эту проблему, вам нужно создать учетные данные проекта, который вы создали в скрипте приложения, а не создавать новый проект в консоли Google. Поэтому пропустите шаг 1, упомянутый в вопросе, который говорит:
- Посетите https://console.developers.google.com/ и создайте новый проект.
И откройте проект App Script. В текущем случае проект "Тестирование Google Form API Personal"
Затем откройте проект как "Облачный проект", щелкнув меню параметров из трех точек, а затем выберите "Облачный проект".
Теперь откроется экран консоли Google. Создайте учетные данные OAuth открытого проекта.