8

Chciałbym uzyskać dostęp do kalendarza publicznego za pomocą interfejsu API REST Google.Uzyskiwanie dostępu do kalendarza publicznego za pomocą Google API bez konieczności logowania użytkownika

kalendarz API Google sugeruje, muszę token OAuth, aby uzyskać dostęp do kalendarzy:

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

Jednak jestem z dostępem do kalendarza publicznego i robie to z serwera więc może nie powinnam/Musisz poprosić użytkownika o uwierzytelnienie.

Używam node.js API: „. Twój klient wydał wniosek nieprawidłowy lub nielegalny To wszystko wiemy”

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

ta zwraca

Wywołanie .withApiKey('***') po .calendars.get() zwraca ten sam błąd.

Wszelkie sugestie?

Odpowiedz

12

Jako dokumentacja stanowi więcej niż raz

Wszystkie wnioski do kalendarza Google API musi być autoryzowane przez uwierzytelnionego użytkownika.

W związku z tym, jeśli chcesz używać interfejsu Google Calendar API, potrzebujesz uwierzytelnionego użytkownika. Można to łatwo osiągnąć za pomocą modułów takich jak Passport.js i Passport-google-oauth.

Jednakże, jeśli można zostawić na bok API na chwilę i

  • kalendarz jest publiczny
  • chcesz czytać tylko dostęp

można łatwo chwycić adres publiczny i konsumować kalendarz przez ical, xml lub html. Wystarczy popatrzeć na wakacje UK kalendarza publicznego: http://imgur.com/UGjPtqp

można uzyskać dostęp do danych publicznie od:

W tym momencie , pobieranie takich zasobów za pomocą węzła jest trywialne i uzyskanie pożądanych danych.

+2

niestety „basic” pasza nie zawiera wszystkich danych kalendarzowych, a „full” karma po prostu zlikwidowane. – squarecandy

0

Google musi mieć uwierzytelnionego użytkownika, ale ponieważ jest to kalendarz publiczny, nie powinno się wymagać od użytkownika uwierzytelniania. Po stronie serwera, więc użyj własnego uwierzytelnienia (lub utwórz dla tego użytkownika Google), a jako uwierzytelniony użytkownik uzyskasz dostęp do tego kalendarza, bez pytania prawdziwego użytkownika o uwierzytelnienie ...

6

Och, daj spokój! Możesz pobierać dane bez OAuth bez konieczności logowania się użytkownika, o ile kalendarz jest ustawiony jako publiczny! Sam to przetestowałem.

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

Po prostu spróbuj.

Dokumentacja jest tutaj https://developers.google.com/google-apps/calendar/v3/reference/events/list#examples

Powiązane problemy