2013-11-27 3 views
6

Используя Google Apps Email Settings API, делегат удален с помощью приведенного ниже сценария. При возникновении ошибки, например, пытается удалить делегатов, которые не существуют, то будет возвращено следующее сообщение:muteHttpExceptions = истинный отказ аутентификации ошибок

Исключение: Не удалось выполнить запрос возвращенного кода 400. Усеченный сервера Ответ: < XML версия = «1,0» кодирования = "UTF-8"? > < AppsForYourDomainErrors > < ошибка ERRORCODE = "1303" invalidInput = "[email protected]" причина = "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 = '[email protected]' 
     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

Этот вопрос был размещен в системе отслеживания проблем Google Apps Script, как ticket 3478 и acknowledged as a bug. Билет остается открытым, но the following workaround has been proposed:

  1. Отмена доступа в настройках безопасности вашего аккаунта Google, чтобы как www.google.com и источник Apps Script (таблицы и т.д.).

  2. Изменить параметр oAuthServiceName на что-то еще.

  3. Повторный запуск сценария

Смежные вопросы