web-dev-qa-db-ja.com

JavaScript経由で許可なしにGoogle Calendar APIにアクセスする

祝日を含む公開カレンダー(Googleカレンダーから)にアクセスしようとしています。

calendarId: 'pt_br.brazilian#[email protected]'

カレンダーは公開されているので、APIキーのみを使用してカレンダーにアクセスできると思いました。

function OnLoadCallback() {
    var config = {
        client_id: '32j4lk32j5kj342l5h.googleuser.com', //fake client id
        scope: 'https://www.googleapis.com/auth/calendar.readonly'
    };
    gapi.client.setApiKey('fId345AM20HXXXXXXXXXXXXXXXXgT3f9kyp2REfkaw2'); //fake api key
    gapi.client.load('calendar', 'v3', function() {
        var today = new Date(),
            request;

        request = gapi.client.calendar.calendarList.get({
            calendarId: 'pt_br.brazilian#[email protected]',
            timeMin: (new Date(today.getFullYear(), today.getMonth(), today.getDay(), 0, 0, 0, 0)).toISOString(),
            timeMax: (new Date(today.getFullYear(), today.getMonth(), today.getDay(), 23, 59, 59, 999)).toISOString(),
            fields: 'items(creator(displayName,email),end,endTimeUnspecified,start,summary)'
        });

        request.execute(function(response) {
            window.alert('length of items: ' + response.items.length);
        });

    });
}

ただし、次の応答が返されます。これは401(無許可)エラーです。

{
 "error": {
  "errors": [
   {
    "domain": "global",
    "reason": "required",
    "message": "Login Required",
    "locationType": "header",
    "location": "Authorization"
   }
  ],
  "code": 401,
  "message": "Login Required"
 }
}

誰かが私がやろうとしていることが達成可能かどうかを明確にできますか?
そして最後に可能であれば、現在のコードを参照して何を変更する必要がありますか?

21
fegemo

JQueryを使用して同じことを行うことができました。

var mykey = 'your_api_key'; // typically like Gtg-rtZdsreUr_fLfhgPfgff
var calendarid = 'you_calendar_id'; // will look somewhat like [email protected]

$.ajax({
    type: 'GET',
    url: encodeURI('https://www.googleapis.com/calendar/v3/calendars/' + calendarid+ '/events?key=' + mykey),
    dataType: 'json',
    success: function (response) {
        //do whatever you want with each
    },
    error: function (response) {
        //tell that an error has occurred
    }
});

ただし、以下を実行したことを確認する必要があります。


1) https://code.google.com/apis/console でプロジェクトを登録します
2)シンプルAPIアクセスキーを生成します
3)サービスの下でCalendar APIがアクティブになっていることを確認します。

詳しくは https://developers.google.com/google-apps/calendar/firstapp をご覧ください

35
Sola Oderinde