1

我正在开发一个通过 OAuth2 连接到第三方服务的 GMail 插件。要获取授权代码,请使用以下重定向 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>');
}

createAccessToken函数被成功调用,并且插件获得一个访问令牌。但是,HTML 不会在弹出窗口中提供。相反,有一个带有以下错误的占位符:“脚本已完成但未返回任何内容。”

结果,我遇到了一个无法自动关闭的错误窗口,也没有告诉用户他们必须关闭窗口才能继续使用插件。

我做错了什么,或者这是某种错误或删除的功能?感谢您的任何建议。

UPD:错误看起来像这样

4

1 回答 1

0

事实证明 HtmlService 在这种情况下确实有效。我有一个authCallback的函数名冲突,所以没有调用正确的。对不起,错误信息。如果有人在处理回调窗口时遇到问题,请按照问题中的说明进行操作。

于 2020-01-22T14:21:50.720 回答