for - Acceder a la API de Google Calendar sin autorización a través de JavaScript
google calendar api scope (1)
Estoy intentando acceder a un calendario público (desde Google Calendar) que contiene días festivos nacionales:
calendarId: ''pt_br.brazilian#[email protected]''
Como el calendario es público, pensé que podría acceder a él solo con la clave 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);
});
});
}
Sin embargo, sigo recibiendo la siguiente respuesta, que es un error 401 (no autorizado):
{
"error": {
"errors": [
{
"domain": "global",
"reason": "required",
"message": "Login Required",
"locationType": "header",
"location": "Authorization"
}
],
"code": 401,
"message": "Login Required"
}
}
¿Alguien puede aclarar si lo que estoy tratando de hacer es alcanzable o no?
Y, por último, si es posible, ¿qué debo cambiar con respecto a mi código actual?
Pude hacer lo mismo usando 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
}
});
Sin embargo, debe asegurarse de haber hecho lo siguiente:
1) Registre un proyecto en https://code.google.com/apis/console
2) Generar una clave de acceso API simple
3) Asegúrese de que la API de calendario esté activada en servicios.
Lea más en https://developers.google.com/google-apps/calendar/firstapp