在Google Script Library中使用OAuth2流程会返回“重定向或丢失URI”。

时间:2016-12-06 01:21:48

标签: google-apps-script google-oauth2 smartsheet-api

我正在编写一个自定义Google脚本库,可在多个Google工作表中使用。它使用Google Script OAuth2 library来管理带有Smartsheet API的OAuth流。很遗憾,它正在返回'重定向URI丢失或无效'。

我让OAuth2流程在单个电子表格脚本中运行良好,但是当我将代码移动到库中时它停止了工作。

DID 更新了Smartsheet开发人员菜单中的重定向URI,我确认从.getRedirectUri()返回的URI是与我的应用相关联的URI在Smartsheet的应用注册中。

库中代码的其他方面运行良好,让我高度放心,它仍然像它绑在一张纸上一样工作。

我对该库的目标是可以从多个工作表中使用它来访问Smartsheet API,从而阻止我在Smartsheet开发人员菜单中为每个可能使用的工作表创建一个独特的应用程序(具有唯一的重定向URI)这段代码。

这可能吗?我不知道它不喜欢重定向URI吗?

1 个答案:

答案 0 :(得分:0)

开发库时,最好不要使用令牌源。常见的设计模式是让用户传入您的库调用以获取令牌的函数。这允许用户选择OAuth工作流的实施方式和位置。

myLibrary.gs

var tokenService_ = function(){return null};

function setTokenService(tokenService){
  tokenService_ = tokenService
}

//some hypothetical function in your library
function getData(options){
  return fetchFromAPI(options,tokenService_());
}

userCode.gs

function requestData(){
  myLibrary.setTokenService(function(){ return ScriptApp.getOAuthToken()});
  var data = myLibrary.getData("foo");
}