muteHttpExceptions = true会导致身份验证失败

时间:2013-11-27 09:41:27

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

使用Google Apps Email Settings API使用下面的脚本删除委托。如果发生错误,例如尝试删除不存在的委托,则返回以下消息:

  

异常:返回代码400的请求失败。截断的服务器   响应:< xml version =“1.0”encoding =“UTF-8”?>    < AppsForYourDomainErrors> < error errorCode =“1303”   invalidInput =“XXXX@XXXX.com”reason =“E ...(使用muteHttpExceptions   检查完整响应的选项)

但是,使用muteHttpExceptions = true时,身份验证失败:

  

例外:无法对服务进行身份验证:google

这迫使我使用try / catch结构而不是检查HTTPResponse对象。我想知道为什么会这样,以及如何解决它。

测试功能:

   function test() {
      var consumerKey = 'XXXX';
      var consumerSecret = 'XXXX';
      var domain = 'XXXX.com';
      var userName = 'XXXX'
      var delegateName = 'XXXX@XXXX.com'
      var serviceName = 'google';
      var scope = 'https://apps-apis.google.com/a/feeds/emailsettings/2.0/';


      var oAuthConfig = UrlFetchApp.addOAuthService(serviceName);
      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(consumerKey);
      oAuthConfig.setConsumerSecret(consumerSecret);

      var fetchParameters = {};
      fetchParameters.oAuthServiceName = serviceName;
      fetchParameters.oAuthUseToken = 'always';
      fetchParameters.method = 'DELETE';
      fetchParameters.muteHttpExceptions = false;

      try {
        var url = 'https://apps-apis.google.com/a/feeds/emailsettings/2.0/'+ domain + '/' + userName + '/delegation/' + delegateName;
        var result = UrlFetchApp.fetch(url, fetchParameters);
      } catch (e) {
        Logger.log(e);
      }
    }

1 个答案:

答案 0 :(得分:1)

此问题已作为ticket 3478acknowledged as a bug发布到Google Apps脚本问题跟踪器。门票仍然开放,但the following workaround has been proposed

  
      
  1. 将您Google帐户的安全设置中的访问权限撤销到www.google.com和Apps脚本源(电子表格等)。

  2.   
  3. 将oAuthServiceName参数更改为其他参数。

  4.   
  5. 重新运行脚本

  6.