Не может обслуживать HTML на странице обратного вызова скрипта Google Apps в дополнении GMail - PullRequest
1 голос
/ 22 января 2020

Я работаю над надстройкой GMail, которая подключается к стороннему сервису через OAuth2. Для получения кода авторизации используется следующий URI перенаправления: https://script.google.com/macros/d/ [SCRIPT_ID] / usercallback . Вот фрагмент кода, который запускает авторизацию:

var stateToken = ScriptApp.newStateToken()
                          .withMethod( "authCallback" )
                          .withTimeout( 120 )
                          .createToken();

var authUrl = _authBaseUrl
              + "&client_id=" + encodeURIComponent( _clientId )
              + "&redirect_uri=" + encodeURIComponent( _redirectUri )
              + "&state=" + stateToken;

CardService.newAuthorizationException()
           .setAuthorizationUrl( authUrl )
           .setResourceDisplayName( "Resource" )
           .throwException();

А вот функция обратного вызова (фрагмент HTML взят из здесь ):

function authCallback( request )
{
    createAccessToken( request.parameter.code );
    return HtmlService.createHtmlOutput('Success! <script>setTimeout(function() { top.window.close() }, 1);</script>');
}

The createAccessToken функция успешно вызывается, а надстройка получает токен доступа. Однако HTML не отображается в всплывающем окне. Вместо этого есть заполнитель со следующей ошибкой: «Сценарий завершен, но ничего не возвращен».

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

Что-то не так, что я делаю, или это какая-то ошибка или удаленная функция? Спасибо за любые предложения.

UPD: ошибка выглядит следующим образом

1 Ответ

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

Оказывается, что HtmlService действительно работает в этом случае. У меня было столкновение имени функции для authCallback , поэтому правильная функция не вызывалась. Извините за дезинформацию. Если у кого-то возникли проблемы с обработкой окна обратного вызова, сделайте, как описано в вопросе.

...