2013-11-27 17 views
6

Sử dụng Google Apps Email Settings API đại biểu sẽ bị xóa với tập lệnh bên dưới. Nếu xảy ra lỗi, ví dụ cố gắng để xóa các đại biểu rằng không tồn tại, được thông báo sau sẽ được trả về:muteHttpExceptions = true ném lỗi xác thực

Ngoại lệ: Yêu cầu thất bại cho trả về mã 400. rút gọn máy chủ phản ứng: phiên bản < xml = "1.0" encoding = "UTF-8"? > < AppsForYourDomainErrors > < lỗi errorCode = "1303" invalidInput = "[email protected]" Lý do = "E ... (sử dụng muteHttpExceptions tùy chọn để kiểm tra phản ứng đầy đủ)

Tuy nhiên khi sử dụng muteHttpExceptions = true sự thẩm định thất bại:

Ngoại lệ: không thể xác thực cho dịch vụ: google

Điều này buộc tôi phải sử dụng cấu trúc try/catch thay vì kiểm tra đối tượng HTTPResponse. Tôi muốn biết tại sao điều này xảy ra và cách giải quyết nó.

Chức năng kiểm tra:

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

Trả lời

1

Câu hỏi này đã được đăng lên các vấn đề theo dõi Google Apps Script như ticket 3478acknowledged as a bug. Vé vẫn mở nhưng the following workaround has been proposed:

  1. Thu hồi quyền truy cập vào Cài đặt bảo mật tài khoản Google của bạn để cả hai www.google.com VÀ nguồn Apps Script (bảng vv).

  2. Thay đổi thông số oAuthServiceName thành thông tin khác.

  3. Re-chạy kịch bản

Các vấn đề liên quan