OAuth的在谷歌Apps脚本库(OAuth in Google Apps Scripts Libr

2019-07-30 21:34发布

我建立了一些包装库在GAS的一些域管理员的API。 我有一个处理的OAuth,网址抓取,XML到对象和对象到XML功能的通用库。 我加入这个作为一个库到我的API封装。 我创建第一个是为EmailAuditAPI。 当我加载EmailAuditAPI作为库这一切正常。 我创建的第二API包装是为GmailSettingsAPI。 此包装内工作本身很好,但是当我把它从那里已加载作为库另一个脚本不能正常工作。 为了更直观的你

GoogleAPITools - > EmailAuditAPI包装 - >项目脚本:作品!

GoogleAPITools - > GmailSettingsAPI包装 - >项目脚本:不行!

GoogleAPITools - > GmailSettingsAPI包装:作品!

我觉得这是最重要的代码:

GoogleAPITools
function callGApi(apiUrl,authScope,method,payloadIn)
{  
  //oAuth & Fetch Arguments
  var fetchArgs = googleOAuth_("google", authScope);
  fetchArgs.method = method ? method : "GET";

  if(payloadIn)
  {
    fetchArgs.contentType = "application/atom+xml";
    fetchArgs.payload = payloadIn;
  }

  var urlFetch = UrlFetchApp.fetch(apiUrl, fetchArgs); //This line fails w/ not working wrapper
  var returnObject = urlFetch.getContentText() != '' ? Xml.parse(urlFetch.getContentText()) : urlFetch.getResponseCode();
  return returnObject;
}

//Google oAuth
function googleOAuth_(name,scope)
{
  var oAuthConfig = UrlFetchApp.addOAuthService(name);
  oAuthConfig.setRequestTokenUrl("https://www.google.com/accounts/OAuthGetRequestToken?scope="+scope);
  oAuthConfig.setAuthorizationUrl("https://www.google.com/accounts/OAuthAuthorizeToken");
  oAuthConfig.setAccessTokenUrl("https://www.google.com/accounts/OAuthGetAccessToken");
  oAuthConfig.setConsumerKey("anonymous");
  oAuthConfig.setConsumerSecret("anonymous");
  return {oAuthServiceName:name, oAuthUseToken:"always"};
}

当加载到第三脚本库这个包装工作。

function getAccountInfoRequest(user,reqId)
{
  var properties = GoogleAPITools.callGApi(ACCOUNTINFOURL + user + "/" + reqId,AUDITSCOPE).entry.property;
  return GoolgeAPITools.returnXmlToObject(properties);
}

当加载到第三脚本库这个包装是不行的,但它确实对自己的工作。 该GoogleAPITools加载为两个包装脚本库。

GmailSettingsAPI Wrapper
//Get Signature
function getSignatureForUser(user)
{
  var returnedInfo = GoogleAPITools.callGApi(EMAILSETTINGSURL + user + "/signature",EMAILSETTINGSSCOPE);
  return GoolgeAPITools.returnXmlToObject(new Array(returnedInfo.entry.property));
}

第三个项目脚本加载的库都包装:

function testApiWrappers() {
  var user = "john";
  var reqId = "123456789";
  Logger.log(AuditApi.getAccountInfoRequest(user,reqId));
  Logger.log(GmailSettingsApi.getSignatureForUser(user)); //Fails here
}

在我的日志我看到了AuditApi调用返回的,但我得到一个“意外的错误:”引用的URLFetch在GoogleAPITools脚本。

有两个API的东西了解OAuth不同? 有没有在我的代码刺目的东西,我错过了? 任何帮助将是巨大的。

文章来源: OAuth in Google Apps Scripts Libraries