我有一个应用,它通过OAuth 1.0将一项服务与Google表格相关联。
我点击"登录"在插件菜单中,发送签名和回调域(当前表)。然后在服务中我点击按钮,获取请求令牌,然后返回带参数的指定域。
function onOpen(e)
{
Logger.log( SpreadsheetApp.getActiveSpreadsheet().getUrl() );
Logger.log( e.source.getUrl() );
}
但.getUrl()
并不包含它们。
根据>this<,我无法在表格中使用doGet(e)
,而且由于OAuth,我无法使用网络应用,因为我仍然需要将这些参数传递给表格
我试图通过window.top.location.href
在客户端获取它,但是存在跨域错误。
问题:我可以得到它吗?或者这是不可能的?
答案 0 :(得分:0)
所以,部分回答我的问题:
我们需要2个不同的脚本。第一个是Sheets web插件,第二个是Web App。接下来,我们需要实现屏幕截图中显示的所有步骤:
1)在步骤0,1,2之后,服务提供商应使用以下代码将我们重定向到帮助程序脚本(Web App
):
function doGet(e)
{
var token = e.parameter.oauth_token,
code = e.parameter.oauth_verifier,
response;
if(token && code && Root.setVerificationCode(token, code))
response = "Success";
else
response = 'Error';
return HtmlService.createHtmlOutput(response);
}
这里我们检索GET参数并将它们发送到Sheets web addon(Root
)。
点击Resources -> Libraries
,然后将您的插件添加为库。 Root
只是一个标识符。
2)表格插件代码:
function setVerificationCode(token, code)
{
var oauth = new OAuth();
if(oauth.getAccessToken(code))
{
// change menu here
return true;
}
else
return false;
}
这些是实施OAuth 1.0所需的完整步骤。
P.S。现在我在更改菜单方面遇到了问题,但这是我的下一个问题。