通过Gmail插件从非Google服务接收身份验证响应数据

时间:2018-05-29 10:43:46

标签: google-apps-script gmail-addons

我正在构建一个包含两个步骤的Gmail插件:

  1. 使用Gmail帐户授权。

  2. 进行身份验证以访问我的服务。

  3. 示例:与Trello插件相同:

    trello

    当我点击按钮登录时,登录表单如下所示:

    example

    我想在登录后收到数据回复。我已阅读ActionResponse文档,但无法找到解决方案。

    我如何收到数据回复?

3 个答案:

答案 0 :(得分:2)

我相信,您正在尝试授权自定义服务。 为了授权像trello这样的自定义服务,您必须为它配置oAuth。

在gmail附加组件中创建oAuth服务以请求访问trello。 用户完成oAuth流后,您可以使用oAuth服务获取访问令牌。使用此令牌可在需要时访问端点。

参考example

编辑1:

行动回复 用法如下:



    //action
    var onTestBtnClick = CardService.newAction().setFunctionName('onTestBtnClick');
    //Button
    var testBtn = CardService.newTextButton().setText('test').setOnClickAction(onTestBtnClick);
    //action handler
    function onTestBtnClick(){
        //do some action and finally open google.com
        return CardService.newActionResponseBuilder()
            .setOpenLink(CardService.newOpenLink()
            .setUrl("https://www.google.com"))
        .build();
    }




答案 1 :(得分:1)

您需要为服务器(第三方服务)设置单独的身份验证页面。用户必须经过您页面上的身份验证过程。用户成功验证您的页面后,您需要将其重定向到redirect_uri,该redirect_uri作为URL参数从附加组件传递到您的页面。 authcallback处的脚本将命中您的令牌URL端点,您可以在启动附加组件身份验证服务时指定该端点。如果令牌URL端点返回有效响应,则会触发附加代码中的table.downloadToTab("json"); 函数,该函数会缓存会话并让用户继续使用附加组件。

下面是整个流程的示意图:

enter image description here

请查看this library Google提供的实施方法。

还结帐my post,其中更详细地介绍了如何将您的第三方服务连接到Gmail插件

答案 2 :(得分:0)

请参阅此文档https://isamatov.com/gmail-add-on-connect-non-google-service/

这将为您提供答案。

您需要输入

中的登录页面网址
setAuthorizationBaseUrl('https://domain/login.php')

您要接收的响应需要在下面的URL中设置

 setTokenUrl('https://domain/response.php')

function getService() {
  return OAuth2.createService('Demo Auth')
    .setAuthorizationBaseUrl('https://domain/json.php')
    .setTokenUrl('https://domain/token.php')
 }