Надстройка Gmail - обратный вызов из newOpenLink не вызывается - PullRequest
0 голосов
/ 26 июня 2018

Независимо от того, что я делаю - мой обратный вызов из newOpenLink () не вызывается. Код ниже показывает, что я делаю: 1. Я открываю ссылку на страницу на нашем сервере, которая получает некоторую информацию 2. Я использую строку в "redirect_uri" части строки запроса, чтобы перезагрузить страницу 3. страница перезагружается (хотя вместо "https://script.google.com/macros/d/..." url" она заканчивается "https://script.google.com/a/macros/my_domain/d/…") - текст на странице:

Google Диск: Извините, в данный момент невозможно открыть файл. Пожалуйста, проверьте адрес и попробуйте еще раз

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

Спасибо

Sam

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 голосов
/ 27 июня 2018

Может стоить сообщить об этом здесь с Google. Это одна из тех проблем, которая сведет с ума многих разработчиков.

0 голосов
/ 24 апреля 2019

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

На какие символы он влияет, по-видимому, зависит от того, какие команды Google настроили и где; тестируя ваши URL-адреса и аналогичный URL-адрес, даже не пытаясь сломать его, как в моем отчете об ошибках, все ссылки прерываются в текстовых сообщениях при анализе!

enter image description here

Здесь мой отчет об ошибке, для справки, для развлечения.

0 голосов
/ 27 июня 2018

Наконец-то понял - по какой-то причине Google Apps Script задыхается от косой черты перед строкой запроса - на моей всплывающей странице я вызывал скрипт, как: https://script.google.com/macros/d/[script_id]/usercallback/?state=[state]

Вызов без косой черты перед "?" работы - https://script.google.com/macros/d/[script_id]/usercallback?state=[state]

Это очень странно, так как наличие косой черты считается хорошей практикой ...

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...