1

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

2 に答える 2

1

oAuth 承認ダイアログは、スクリプト マネージャー内からコードを実行する場合にのみ表示されます。Apps Script コードをサイトに公開するには、そのバージョンのスクリプトをサービスとして公開する必要がありました。そのスクリプトのコード エディターを開き、最初にスクリプト エディターで関数を実行できることを確認します。これにより、oAuth 承認が保存されていることが確認されます。

于 2012-05-22T19:40:31.037 に答える
0

カレンダー サービスの Google Apps Script で Oauth を使用する理由

于 2012-05-23T12:30:09.690 に答える