No matter what I do - my callback from newOpenLink() is not called. Code below is showing what I do: 1. I open link to a page on our server that gets some info 2. I use a string in "redirect_uri" part of the query string to reload page 3. page reloads (though instead of "https://script.google.com/macros/d/..." url it ends up with "https://script.google.com/a/macros/my_domain/d/…") - The text in a page:
Google Drive: Sorry, unable to open the file at this time. Please check the address and try again
Below is the code I am using - any help is much appreciated.
Thanks,
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";
}