通过JavaScript未经授权访问Google日历API

通过JavaScript未经授权访问Google日历API,javascript,google-api,oauth-2.0,google-calendar-api,Javascript,Google Api,Oauth 2.0,Google Calendar Api,我正在尝试访问包含国家假日的公共日历(从谷歌日历): calendarId: 'pt_br.brazilian#holiday@group.v.calendar.google.com' 由于日历是公开的,我想我可以只使用API密钥访问它: function OnLoadCallback() { var config = { client_id: '32j4lk32j5kj342l5h.googleuser.com', //fake client id s

我正在尝试访问包含国家假日的公共日历(从谷歌日历):

calendarId: 'pt_br.brazilian#holiday@group.v.calendar.google.com'
由于日历是公开的,我想我可以只使用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#holiday@group.v.calendar.google.com',
            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(未经授权)错误:

有人能澄清我正在努力做的事情是否可以实现吗?

最后,如果可能的话,我必须修改我当前的代码吗?

我可以使用jQuery做同样的事情

var mykey = 'your_api_key'; // typically like Gtg-rtZdsreUr_fLfhgPfgff
var calendarid = 'you_calendar_id'; // will look somewhat like 3ruy234vodf6hf4sdf5sd84f@group.calendar.google.com

$.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) 在
2) 生成一个简单的API访问密钥
3) 确保在“服务”下激活日历API


请阅读

上的详细信息,通过上面的示例,您是否碰巧有关于如何对传入项目进行排序的参考?@blackhawk您可以控制台。记录响应并查看其中的内容。@sola oderinde您可以提供如何找到日历id的信息吗*编辑我在谷歌日历设置中找到的。另外,仅供参考,您的日历将显示404,除非共享给公众。这有配额限制吗?
var mykey = 'your_api_key'; // typically like Gtg-rtZdsreUr_fLfhgPfgff
var calendarid = 'you_calendar_id'; // will look somewhat like 3ruy234vodf6hf4sdf5sd84f@group.calendar.google.com

$.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
    }
});