获取OAuth2的参数错误

时间:2015-06-26 02:51:11

标签: google-apps-script oauth-2.0 google-oauth

我对此非常陌生,目前正在努力获取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);
}

非常感谢任何帮助。

1 个答案:

答案 0 :(得分:0)

在Appsscript中有一些触发器,这些触发器执行一段代码以响应某些操作或参数。

在这种情况下,您使用的是触发器doGet(这是您的函数的名称)。如您所见,该函数接收参数“e”。如果直接在环境中运行该函数,则此参数将“未定义”,因为您没有将任何内容传递给函数。

当您将代码作为Web应用程序访问时,将执行此触发器。要执行此操作,您必须单击“保存”按钮旁边的图标(看起来像带箭头的云)here您可以找到相关信息。

当您通过部署应用程序后获得的URL访问代码时,该函数会收到必要的参数(在“e”中),然后它应该可以正常工作。