2016-01-08 21 views
17

GoogleカレンダーのAPIを使用して、私のカレンダーを削除したバージョンを表示しています。誰でも私のサイトのカレンダーを見ることができます。現在のところ、私はカレンダーページを閲覧することができます。誰かとページURLを共有する場合、それは動作しません - 何も表示することはできません。Javascript GoogleカレンダーAPI公開にカレンダーを設定する

私はここにGoogleの開始コードを使用しています:

var CLIENT_ID = 'MYID**'; 
var SCOPES = ["https://www.googleapis.com/auth/calendar.readonly"]; 

function checkAuth() { 
    gapi.auth.authorize(
     { 
     'client_id': CLIENT_ID, 
     'scope': SCOPES, 
     'immediate': true 
     }, handleAuthResult); 
} 

function handleAuthResult(authResult) { 
    var authorizeDiv = document.getElementById('authorize-div'); 
    loadCalendarApi(); 
} 

function handleAuthClick(event) { 
    gapi.auth.authorize({ 
     client_id: CLIENT_ID, 
     scope: SCOPES, 
     immediate: false 
    }, handleAuthResult); 
    return false; 
} 

function loadCalendarApi() { 
    gapi.client.load('calendar', 'v3', listUpcomingEvents); 
} 

function listUpcomingEvents() { 
    var request = gapi.client.calendar.events.list({ 
     'calendarId': '[email protected]', 
     'timeMin': '2011-06-03T10:00:00-07:00', 
     'showDeleted': false, 
     'singleEvents': true, 
     'maxResults': 1000, 
     'orderBy': 'startTime' 
}); 

しかし、私はどここのカレンダーを公開するために見つけるように見えることはできません。 stackoverflowの2つの例ではあまり説明されていませんし、GoogleのAPIドキュメントに何か接続することはできません。

+0

私が行っている方法で解決策が見つからない場合は、データベースとそこから情報を引き出す – ntgCleaner

+0

プライベートAPIキーを使用してカレンダーデータをサーバーにプルして処理し、それをJSにサーバー化できませんでしたか?あなたはデータベースを必要としません(より効率的ですが)。 –

答えて

0

Calendarsリソースには、可視性に関する属性はありません。ただし、Events listを使用しているため、そのリソースには公開されているアイテムを(手動ではあるが)フィルタリングできるvisibility属性があります。

あなただけのカレンダーを共有したい場合、あなたはそれを公開すると、次にみんなにカレンダーを共有することができますThe event is public and event details are visible to all readers of the calendar.

+0

だから私はカレンダー全体を公開し、まだ結果を得ようとすることでチェックした。 – ntgCleaner

1

公共。こうやって。カレンダーパブリックは、あなたがこのウェブサイトhttps://support.google.com/calendar/answer/37083?hl=enの手順に従うことができますようにするに

は、あなたのカレンダーが公共のコンピュータで

  1. を作るGoogleカレンダーを開きます。

  2. 右上にある[設定の設定]をクリックします。ギアボタン> [設定]をクリックします。

  3. [カレンダー]タブを開きます。

  4. 共有したいカレンダーの名前をクリックします。

  5. [このカレンダーを共有]タブを開きます。

  6. [このカレンダーを公開する]チェックボックスをオンにします。

  7. 他の人があなたのイベントの詳細を表示したくない場合は

    、唯一の空き/予約済みの表示(詳細を非表示)を選択します。

  8. [保存]をクリックします。

、その後、あなたはあなたのカレンダーのオプション内のiframeでカレンダーを共有することができます。コンピュータで https://support.google.com/calendar/answer/41207?hl=en

埋め込みウェブサイト上のカレンダー

  1. 、Googleカレンダーを開きます。モバイルアプリではなく、コンピュータからウェブサイトに埋め込むコードを取得することしかできません。

  2. 右上にある[設定の設定]をクリックします。ギアボタン> [設定]をクリックします。

  3. [カレンダー]タブを開きます。

  4. 埋め込みたいカレンダーの名前をクリックします。

  5. [このカレンダーを埋め込む]セクションに表示されているiframeコードをコピーします。

  6. ウェブサイトエディタを開き、カレンダーを表示する場所にこのコードを貼り付けます。

+0

残念ながら、私はGoogleのターンキーiFrameを探しているわけではありません。私はこれがどのように彼らのAPIを使用して行うことができますかと思います。 – ntgCleaner

+0

APIからカレンダーにアクセスするために、公開するための指示に従って生成されたURLを使用できるはずです。 – kgiff

0

例がするようにあなたは(推奨されません)OAuth 2.0の承認プロセスを開始する必要はありません。実際には、ブラウザのAPIキーとカレンダーIDを使用してカレンダーを読み込むことができます。

function checkAuth() { 
    //gapi.auth.authorize(
    // { 
    // 'client_id': CLIENT_ID, 
    // 'scope': SCOPES.join(' '), 
    // 'immediate': true 
     // }, handleAuthResult); 
     gapi.client.setApiKey('browser API key'); 
     handleAuthResult({ error: false }); 
    } 

    function listUpcomingEvents() { 
    var request = gapi.client.calendar.events.list({ 
     'calendarId': 'your calendar id', 
     'timeMin': (new Date()).toISOString(), 
     'showDeleted': false, 
     'singleEvents': true, 
     'maxResults': 10, 
     'orderBy': 'startTime' 
    }); 

    request.execute(function(resp) { 
     var events = resp.items; 
     appendPre('Upcoming events:'); 

     if (events.length > 0) { 
     for (i = 0; i < events.length; i++) { 
      var event = events[i]; 
      var when = event.start.dateTime; 
      if (!when) { 
      when = event.start.date; 
      } 
      appendPre(event.summary + ' (' + when + ')') 
     } 
     } else { 
     appendPre('No upcoming events found.'); 
     } 

    }); 
    } 
関連する問題