我对此非常陌生,目前正在努力获取OAuth 2.0令牌,以便与Google Apps脚本一起使用以写入Fusion Table。我正在使用Arun的Google Developers Live代码,而我似乎无法获得访问令牌。当我在下面运行doGet函数时,它给了我一个"类型错误:无法读取属性"参数"来自undefined"。
function doGet(e) {
var HTMLToOutput;
if(e.parameters.code){//if we get "code" as a parameter in, then this is a callback. we can make this more explicit
getAndStoreAccessToken(e.parameters.code);
HTMLToOutput = '<html><h1>Finished with oAuth</h1>You can close this window.</html>';
}
return HtmlService.createHtmlOutput(HTMLToOutput);
}
function getAndStoreAccessToken(code){
var parameters = {
method : 'post',
payload : 'client_id='+CLIENT_ID+'&client_secret='+CLIENT_SECRET+'&grant_type=authorization_code&redirect_uri='+REDIRECT_URL+'&code=' + code
};
var response = UrlFetchApp.fetch(TOKEN_URL,parameters).getContentText();
var tokenResponse = JSON.parse(response);
// store the token for later retrieval
UserProperties.setProperty(tokenPropertyName, tokenResponse.access_token);
}
非常感谢任何帮助。
答案 0 :(得分:0)
在Appsscript中有一些触发器,这些触发器执行一段代码以响应某些操作或参数。
在这种情况下,您使用的是触发器doGet(这是您的函数的名称)。如您所见,该函数接收参数“e”。如果直接在环境中运行该函数,则此参数将“未定义”,因为您没有将任何内容传递给函数。
当您将代码作为Web应用程序访问时,将执行此触发器。要执行此操作,您必须单击“保存”按钮旁边的图标(看起来像带箭头的云)here您可以找到相关信息。
当您通过部署应用程序后获得的URL访问代码时,该函数会收到必要的参数(在“e”中),然后它应该可以正常工作。