2012-05-22 76 views
1

我在使用oAuth的電子表格中開發了一個google apps腳本。 我現在將相同的腳本複製到在網站上運行的小工具。當我想要運行使用OAuth我得到以下錯誤的功能:在序列化的延續網站上的Google Apps腳本小工具是否可以使用OAuth?

這種情況

意外的異常都在我的網站上運行實際的小工具,或者當我從腳本運行功能編輯。從電子表格中的腳本編輯器調用完全相同的代碼。 我做錯了什麼或者在使用網站小工具時,是否無法在UrlFetchApp.fetch中使用oAuth?

感謝,

這裏是我想要做的,你需要包括來自谷歌API控制檯中真正的API祕密測試一些示例代碼。

function CalendarApiBug() { 

    var oAuthConfig = UrlFetchApp.addOAuthService('agenda scheduler'); 
    oAuthConfig.setRequestTokenUrl("https://www.google.com/accounts/"+ 
            "OAuthGetRequestToken?scope=https://www.googleapis.com/auth/calendar"); 
    oAuthConfig.setAuthorizationUrl("https://www.google.com/accounts/OAuthAuthorizeToken"); 
    oAuthConfig.setAccessTokenUrl("https://www.google.com/accounts/OAuthGetAccessToken"); 
    oAuthConfig.setConsumerKey('replacemewithsomethingreal'); 
    oAuthConfig.setConsumerSecret('replacemewithsomethingreal'); 

    this.baseUrl = 'https://www.googleapis.com/calendar/v3/'; 
    this.calendarsList = null; 

    this.getBaseUrl = function() { 
     return this.baseUrl; 
    } //CalendarApiBug.getBaseUrl 

    this.getFetchArgs = function() { 
     return {oAuthServiceName:'agenda scheduler', oAuthUseToken:"always"}; 
    } //CalendarApiBug.getFetchArgs 

    this.getCalendarList = function(refresh){ 
     if (refresh != true && this.calendarsList != null) 
     return this.calendarsList; 

     var fetchArgs = this.getFetchArgs(); 
     fetchArgs.method = 'get'; 
     var url = this.baseUrl + 'users/me/calendarList'; 
     this.calendarsList = Utilities.jsonParse(UrlFetchApp.fetch(url, fetchArgs).getContentText()); 
     return this.calendarsList; 
    } //CalendarApiBug.getCalendarList 
    } 

    function test(){ 
    var api = new CalendarApiBug(); 
    Logger.log(api.getCalendarList(false)); 
    } 

回答

1

僅當從腳本管理器內部運行代碼時,纔會顯示oAuth審批對話框。爲了將您的Apps腳本代碼發佈到網站,您需要將該版本的腳本作爲服務發佈。打開該腳本的代碼編輯器,並確保可以先用腳本編輯器運行這些功能。這將驗證您的oAuth批准已被存儲。

+0

我試着先在編輯器中運行函數,但它給出了錯誤。我認爲該腳本已經發布,因爲小工具的用戶界面顯示在我的網站上。只要我不叫oauth代碼,它就可以工作。 – jankeir

0

爲什麼在Google Apps腳本中使用Oauth作爲日曆服務?

+0

因爲通過oauth可獲得的日曆api允許比API中的構建更多,例如更改日曆的ACL。 – jankeir

相關問題