8

Desidero accedere a un calendario pubblico utilizzando l'API REST di Google.Accesso a un calendario pubblico utilizzando l'API di Google senza richiedere l'accesso a un utente

di Google API calendario suggerisce ho bisogno di un token OAuth per accedere ai calendari:

https://developers.google.com/google-apps/calendar/auth

Comunque, sto accesso a un calendario pubblico e sto facendo questo dal server in modo da non posso/shouldn Non c'è bisogno di chiedere all'utente di autenticarsi.

Sto utilizzando l'API node.js:

googleapis 
    .discover('calendar', 'v3').execute(function(err, client) { 
    client.calendar.calendars.get({ calendarId: '***@group.calendar.google.com' }) 
     .execute(function (err, response) { 
     console.log('response from google', response); 
     }); 
    }); 

Ciò restituisce "Il suo cliente ha emesso una richiesta non valida o illegale Questo è tutto quello che sappiamo.".

Chiamare .withApiKey('***') dopo .calendars.get() restituisce lo stesso errore.

Qualche suggerimento?

risposta

12

Come la documentazione afferma più di una volta

Tutte le richieste alla API di Google Calendar dovranno essere autorizzate da un utente autenticato.

Quindi, se si desidera utilizzare l'API di Google Calendar è necessario un utente autenticato. Questo può essere facilmente ottenuto utilizzando moduli come Passport.js e Passport-google-oauth.

Tuttavia, se si può lasciare da parte l'API per un attimo e

  • il calendario è pubblico
  • si desidera accesso in sola lettura

si può facilmente afferrare l'indirizzo pubblico e consumare il calendario attraverso ical, xml o html. Dai un'occhiata al vacanze nel Regno Unito calendario pubblico: http://imgur.com/UGjPtqp

È possibile accedere ai dati pubblicamente da:

A questo punto , è banale recuperare tali risorse con il nodo e ottenere i dati desiderati.

+2

purtroppo il feed "base" non comprende tutti i dati del calendario, e le alimentazioni "pieni" erano solo smantellati. – squarecandy

0

Google deve disporre di un utente autenticato, ma poiché si tratta di un calendario pubblico, non è necessario chiedere all'autenticazione dell'utente. È lato server, quindi utilizza la tua autenticazione (o crea un utente google solo per quello) e, come utente autenticato, avrai accesso a quel calendario, senza chiedere all'autentico utente di autenticare ...

6

Oh, andiamo ragazzi! È possibile recuperare i dati senza OAuth senza richiedere l'accesso da parte dell'utente finché il calendario è impostato per essere pubblico! L'ho provato io stesso.

$.ajax({ 
    url:"https://www.googleapis.com/calendar/v3/calendars/" + cal_id + "/events?key=" + api_key, 
    success: function(data) { 
    console.log(data); 
    } 
    }); 

Basta provarlo.

La documentazione è qui https://developers.google.com/google-apps/calendar/v3/reference/events/list#examples