Gmail附加组件-不调用newOpenLink的回调

时间:2018-06-26 15:27:48

标签: gmail-addons

无论我做什么-从newOpenLink()进行的回调都不会被调用。 下面的代码显示了我的工作: 1.我打开指向服务器上的页面的链接,该页面获取了一些信息 2.我在查询字符串的“ redirect_uri”部分中使用字符串来重新加载页面 3.页面重新加载(尽管它以“ https://script.google.com/macros/d/…”结尾而不是“ https://script.google.com/a/macros/my_domain/d/ ...”) -页面中的文本:

Google云端硬盘: 抱歉,目前无法打开文件。 请检查地址,然后重试

下面是我正在使用的代码-非常感谢您的帮助。

谢谢

山姆

function getTokenCallback(data) {
    Logger.log("getTokenCallback executed");
}

public createInstance()
{
    var card = CardService.newCardBuilder();
    card.setHeader(
        CardService.newCardHeader()
            .setTitle('Login')
        );

    var section = CardService.newCardSection();

    var loginButton = CardService.newTextButton()
        .setText("Login")
        .setOpenLink(buildOpenLinkAction());

    section.addWidget(loginButton);
    card.addSection(section);
    return [card.build()];
}

public buildOpenLinkAction()
{
    var state = generateNewStateToken("getTokenCallback", "test");

    // baseUrl is global pointing to our external server
    var myUrl = baseUrl + "test-login.html";
    var htmlUrl = myUrl + "?redirect_uri=" + getRedirectURI() + "&state=" + state;

    return CardService.newOpenLink()
        .setUrl(htmlUrl)
        .setOpenAs(CardService.OpenAs.OVERLAY)
        .setOnClose(CardService.OnClose.RELOAD_ADD_ON);

}

public generateNewStateToken(callbackName, user_info) 
{
    return ScriptApp.newStateToken()
    .withMethod(callbackName)
    .withArgument("user_info", JSON.stringify(user_info))
    .withTimeout(3600)
    .createToken();
}

public getRedirectURI() 
{
    var scriptId = ScriptApp.getScriptId();
    return "https://script.google.com/macros/d/" + scriptId + "/usercallback";
}

3 个答案:

答案 0 :(得分:0)

最后弄清楚了-不论出于何种原因,Google Apps脚本在查询字符串前面都用斜杠结尾,在我的弹出页面中,我正像这样回叫脚本:https://script.google.com/macros/d/[script_id]/usercallback/?state=[state]

呼叫时在“?”前面不加斜杠可以-https://script.google.com/macros/d/[script_id]/usercallback?state=[state]

这很奇怪,因为斜杠被认为是一种好习惯...

答案 1 :(得分:0)

可能值得在Google上here进行举报。这是会使许多开发人员发疯的问题之一。

答案 2 :(得分:0)

我找到了您的错误报告。我还发现了一个错误,该错误无法正确解析文本消息中的URL。您可能要在错误报告中提及RFC3986。

它断断续续的哪个字符显然取决于Google团队的设置和位置;测试您的网址和类似的网址,甚至没有试图像我的错误报告中一样破坏它,当解析时,所有链接都在文本消息中被破坏了!

enter image description here

Here是我的错误报告,仅供参考,很有趣。