oAuthを使用するスプレッドシートでGoogleAppsスクリプトを開発しました。同じスクリプトを、サイトで実行されているガジェットにコピーしました。oauthを使用する関数を実行したい場合、次のエラーが発生します。
継続をシリアル化する際の予期しない例外
これは、サイトで実際のガジェットを実行するとき、またはスクリプトエディターから関数を実行するときの両方で発生します。スプレッドシートのスクリプトエディタから呼び出された場合、まったく同じコードが機能します。私は何か間違ったことをしていますか、それともサイトガジェットを使用しているときにUrlFetchApp.fetchでoAuthを使用することは単に不可能ですか?
ありがとう、
1月
これが私がやろうとしていることのいくつかのサンプルコードです。それをテストするには、GoogleApiコンソールからの実際の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));
}