Как запустить функцию 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. Для этого я выполнил следующие шаги:

  1. Посетите https://console.developers.google.com/ и создайте новый проект.
  2. В левом меню выберите "Библиотека"
  3. В библиотеке скриптов приложений найдите "API скриптов приложений" и включите его. введите описание изображения здесь

  4. Затем перейдите в меню учетных данных и нажмите "Создать учетные данные"> Идентификатор клиента OAuth. введите описание изображения здесь

  5. На следующем экране выберите Веб-приложение.

  6. Введите имя нового веб-приложения

  7. В поле "Авторизованные источники JavaScript" установите " http://localhost/"

  8. В поле "URI авторизованного перенаправления" установите " https://developers.google.com/oauthplayground", так как в настоящее время нам потребуется ответ на запрос аутентификации в Google OAuth Playground. И нажмите "Создать".

  9. В случае успеха вы получите "Идентификатор клиента" и "Секрет клиента" своей учетной записи, которые вы будете предоставлять в Google OAuth Playground для аутентификации приложения других пользователей. введите описание изображения здесь

  10. Теперь зайдите на https://developers.google.com/oauthplayground и нажмите на "Настройки". В раскрывающемся меню установите флажок "Использовать свои собственные учетные данные OAuth" и введите "Идентификатор клиента OAuth" и "Секрет клиента OAuth", полученные на шаге 9. введите описание изображения здесь

  11. Затем в разделе "Шаг 1 выберите и авторизуйте API" выберите "API скриптов приложений v1", а затем выберите параметр " https://www.googleapis.com/auth/forms" и нажмите "Авторизовать". введите описание изображения здесь

  12. Затем он запросит авторизацию учетной записи, для которой вы хотите получить доступ к выбранной области. В этом я использую ту же учетную запись, на которой создается "Сценарий приложения" для создания кода, и та же, из которой генерируются "Идентификатор клиента" и "Секрет клиента". введите описание изображения здесь

введите описание изображения здесь

  1. Приведенный выше шаг сгенерирует "Код авторизации", и далее вы можете сгенерировать "Токен обновления" и "Токен доступа". введите описание изображения здесь

  2. Затем мы должны использовать сервисы для выполнения кода скрипта приложения Google. Нажмите "Список возможных операций", а затем выберите "Выполнить сценарии". введите описание изображения здесь

    1. Затем будет сгенерирован синтаксис с запросом идентификатора скрипта, который вы можете найти в проекте скрипта приложения Google. Для этого в проекте Google App Script нажмите "Файл"> "Свойства проекта", и, наконец, откроется всплывающее окно с ссылкой на идентификатор скрипта. введите описание изображения здесь

введите описание изображения здесь

введите описание изображения здесь

  1. Введите идентификатор скрипта в PlayGround, а затем установите тело запроса, нажав кнопку "Ввести тело запроса". Чтобы понять параметры тела запроса, обратитесь к документу https://developers.google.com/apps-script/api/reference/rest/v1/scripts/run

введите описание изображения здесь

введите описание изображения здесь

  1. Теперь нажмите на "Отправить запрос"

Выполнив все вышеперечисленные шаги, мы получаем следующую ошибку аутентификации:

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, упомянутый в вопросе, который говорит:

  1. Посетите https://console.developers.google.com/ и создайте новый проект.

И откройте проект App Script. В текущем случае проект "Тестирование Google Form API Personal"

Затем откройте проект как "Облачный проект", щелкнув меню параметров из трех точек, а затем выберите "Облачный проект".

Теперь откроется экран консоли Google. Создайте учетные данные OAuth открытого проекта.