8

Tôi muốn truy cập lịch công khai bằng API REST của Google.Truy cập lịch công khai bằng API Google mà không yêu cầu người dùng đăng nhập

API lịch của Google cho thấy tôi cần một mã thông báo OAuth để có được quyền truy cập vào lịch:

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

Tuy nhiên, tôi đang truy cập vào một lịch cộng đồng và đang làm điều này từ máy chủ như vậy có thể không/shouldn không phải yêu cầu người dùng xác thực.

Tôi đang sử dụng 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); 
     }); 
    }); 

này trả về "Khách hàng của bạn đã đưa ra một yêu cầu sai hoặc bất hợp pháp Đó là tất cả chúng ta đều biết.".

Gọi .withApiKey('***') sau .calendars.get() trả về cùng lỗi.

Mọi đề xuất?

Trả lời

12

Như các tài liệu khẳng định nhiều hơn một lần

Tất cả các yêu cầu API Lịch Google phải được ủy quyền bởi một người dùng xác thực.

Do đó, nếu bạn muốn sử dụng API lịch Google, bạn cần một người dùng được xác thực. Điều này có thể dễ dàng đạt được bằng cách sử dụng các mô-đun như Passport.jsPassport-google-oauth.

Tuy nhiên, nếu bạn có thể bỏ qua một bên API trong chốc lát và

  • lịch là công
  • bạn muốn chỉ đọc truy cập

bạn có thể dễ dàng lấy các địa chỉ công cộng và tiêu thụ lịch thông qua ical, xml hoặc html. Hãy nhìn vào những ngày nghỉ UK lịch công cộng: http://imgur.com/UGjPtqp

Bạn có thể truy cập vào dữ liệu công khai từ:

Tại thời điểm này , nó là tầm thường để lấy các tài nguyên như vậy với nút và nhận được dữ liệu bạn muốn.

+2

không may là nguồn cấp dữ liệu "cơ bản" không bao gồm tất cả dữ liệu lịch và nguồn cấp dữ liệu "đầy đủ" đã ngừng hoạt động. – squarecandy

0

Google cần có người dùng được xác thực nhưng vì đó là lịch công khai, bạn không cần phải yêu cầu người dùng của mình xác thực. Đó là phía máy chủ, do đó, hãy sử dụng xác thực của riêng bạn (hoặc tạo người dùng google chỉ cho điều đó), và với tư cách là người dùng được xác thực, bạn sẽ có quyền truy cập vào lịch đó mà không yêu cầu người dùng thực xác thực ...

6

Oh thôi nào! Bạn có thể tìm nạp dữ liệu mà không cần OAuth mà không yêu cầu người dùng đăng nhập miễn là lịch được đặt thành công khai! Tôi đã tự mình thử nghiệm nó.

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

Chỉ cần dùng thử.

Tài liệu ở đây là https://developers.google.com/google-apps/calendar/v3/reference/events/list#examples

Các vấn đề liên quan