Как использовать несколько учетных записей в GAS с OAuth2? - PullRequest
1 голос
/ 22 апреля 2020

Я последовал примеру библиотеки GAS OAuth2 . Но я хочу добиться следующего.

  1. Запрос UserA к GAS для authorizationUrl через запрос get / post Https (doGet() или doPost()) с параметром userID
  2. GAS возвращает authorizationUrl и сохраняет свою переменную state в Google Sheet с идентификатором пользователя UserA
  3. UserA авторизуется с использованием этого authorizationUrl
  4. GAS проверяет переменную state из функции authCallback() и проверяет ее с помощью старой сохраненной переменной state из таблицы Google. Если это так, то сохраните UserA's Access Token с идентификатором пользователя в том же листе Google

Примерно так:

function authCallback(request) {
  var service = getService();
  var authorized = service.handleCallback(request);
  var state = request.parameter.state;
  if (authorized) {
    if(state == getOldState(userID)){
      storeToken(userID, service.getAccessToken());
    }
    return HtmlService.createHtmlOutput('<h1>Success!</h1>');
  } else {
    return HtmlService.createHtmlOutput('Denied.');
  }
}

Теперь UserA может модифицировать свой диск с помощью запроса Https для GAS и GAS. Диск UserA с сохраненным токеном доступа Запрос UserB на авторизациюUrl GAS также возвращает authorizationUrl для пользователя B, и он также может получить доступ к газу. GAS также сохраняет маркер доступа UserB со своим userID. Теперь GAS может управлять дисками UserA и UserB с помощью их идентификатора пользователя и уже сохраненных токенов доступа.

Возможно ли это? Я знаю, что токен доступа истекает через некоторое время. Пожалуйста, помогите мне завершить мой хобби проект

1 Ответ

0 голосов
/ 22 апреля 2020

Вы можете использовать класс PropertiesService.

Пример:

В вашем скрипте doPost() сохранить маркер доступа и переопределить маркер sh в пользовательском указателе c свойство.

Сценарий сможет получить эти свойства, используя тот же PropertiesService.

Дополнительная информация:

...