2012-11-30 11 views
18

Sto cercando di accedere a un calendario pubblico (da Google Calendar) che contiene le festività nazionali:Accesso a Google Calendar API senza autorizzazione tramite JavaScript

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

come il calendario è pubblico, ho pensato di essere in grado di accedervi utilizzando solo l'API Key:

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

    }); 
} 

Tuttavia, continuo a ricevere la seguente risposta, che è un 401 (non autorizzata) di errore:

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

Qualcuno può chiarire se ciò che sto cercando di fare è realizzabile o no?
E infine se è possibile - cosa devo cambiare riferendosi al mio codice attuale?

risposta

31

Sono stato in grado di fare la stessa cosa con 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 
    } 
}); 

Tuttavia è necessario essere sicuri di aver fatto quanto segue: -


1) Registrare un progetto a https://code.google.com/apis/console
2) Generare un Simple API di accesso chiave
3) Assicurare Calendario L'API è attivata sotto i servizi.

saperne di più su https://developers.google.com/google-apps/calendar/firstapp

+0

con il vostro esempio mostrato in precedenza, sarebbe vi capita di avere un riferimento su come ordinare gli elementi in entrata? – blackhawk

+0

@blackhawk Puoi console.log la risposta e vedere cosa c'è dentro. – Gulpener

+0

@ sola-oderinde Puoi fornire come hai trovato l'id del tuo calendario? * modifica Ho trovato questo nelle impostazioni del calendario di Google. Inoltre, il tuo calendario apparirà 404 a meno che non sia condiviso con il pubblico. – IamFace

Problemi correlati