使用Google应用程序电子邮件设置API,使用下面的脚本删除代理。如果发生错误,例如试图删除不存在的委托,则返回以下消息:
异常:返回代码400的请求失败。截断的服务器响应:<;xml版本="1.0"编码="UTF-8">;<;AppsForYourDomain错误><;error errorCode="1303"invalidInput="XXXX@XXXX.com"reason="E。。。(使用muteHttpExceptions检查完全响应的选项)
但是,当使用muteHttpExceptions = true
时,身份验证失败:
异常:无法验证服务:谷歌
这迫使我使用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);
}
}
此问题已作为票证3478发布到谷歌应用程序脚本问题跟踪器,并被确认为一个错误。门票仍然开放,但已提出以下解决方案:
在您的谷歌账户安全设置中撤销对www.Google.com和应用程序脚本来源(电子表格等)的访问权限。
将oAuthServiceName参数更改为其他参数。
重新运行脚本