2013-11-27 48 views
6

Utilizzando il numero Google Apps Email Settings API un delegato viene eliminato con lo script seguente. Se si verifica un errore, ad esempio cercando di eliminare i delegati che non esistono, viene restituito il seguente messaggio:muteHttpExceptions = true genera l'errore di autenticazione

Eccezione: Richiesta non riuscita per codice restituito 400. server di troncato risposta: versione < xml = "1.0" encoding = "UTF-8"? > < AppsForYourDomainErrors > < errore ErrorCode = "1303" invalidInput = "[email protected]" ragione = "E ... (uso muteHttpExceptions opzione per esaminare la risposta completa)

Tuttavia quando si utilizza il muteHttpExceptions = true l'autenticazione non riesce:

Eccezione: Impossibile eseguire l'autenticazione per il servizio: google

Questo mi costringe a utilizzare una struttura try/catch invece di esaminare l'oggetto HTTPResponse. Mi piacerebbe sapere perché questo sta accadendo e come risolverlo.

La funzione di test:

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); 
     } 
    } 

risposta

1

Questa domanda è stata pubblicata per l'issue tracker di Google Apps Script come ticket 3478 e acknowledged as a bug. Il biglietto rimane aperto ma the following workaround has been proposed:

  1. Revocare l'accesso nelle impostazioni di sicurezza del tuo account Google sia www.google.com e la fonte di Apps Script (foglio di calcolo, ecc).

  2. Modificare il parametro oAuthServiceName su qualcos'altro.

  3. Re-esecuzione dello script