구글 Calendar API Events:watch에서 사용할 수 없는 달력이 있습니다.
5394 단어 PushNotificationGoogleCalendar
TL;DR
Google Calendar API 사용Events:watch
특정 캘린더에 대한 변경 공지(Push Notification)를 받을 수 있지만 Google에서 제공하는 국가 공휴일 등의 캘린더에는 Watch를 설정할 수 없습니다.
공식 문서는 웹에 정보가 많지 않기 때문에 잊어버린다.
샘플 스크립트(Ruby)
CalendarWatcher.rbclass CalendarWatcher
CALLBACK_URL = 'https://YOUR_SITE'
# client: Google::Apis::CalendarV3::CalendarService
# calendar_id: [email protected]
def self.start(client, calendar_id)
# Watchする対象期間は3日後とします。
expiration = Time.now.strftime('%s%L').to_i + (1000 * 60 * 60 * 24 * 3)
# Events:watch リクエストパラムの準備
req = Google::Apis::CalendarV3::Channel.new
req.id = SecureRandom.uuid
req.type = 'web_hook'
req.address = CALLBACK_URL
req.expiration = expiration.to_s
# Event:watch コールします。
client.watch_event(calendar_id, req)
end
end
탐색할 수 있는 달력
irb(main):00x:0> email = '[email protected]'
irb(main):00x:0> CalendarWatcher.start(client, email)
=> #<Google::Apis::CalendarV3::Channel:xxx @id="d81482a7-300a-4c24-8242-39c213f89f22", @expiration=1552330683000, @kind="api#channel", @resource_id="xxxxxxxxxxxxxxx", @resource_uri="https://www.googleapis.com/calendar/v3/calendars/[email protected]/events?maxResults=250&alt=json">
Watch 달력 1 "Not Fund" 없음
참조 권한이 없는 캘린더에 대해 Watch 요청을 하는 동안 Not Fund에서 오류가 발생했습니다.irb(main):00x:0> email = '[email protected]'
irb(main):00x:0> CalendarWatcher.start(client, email)
Traceback (most recent call last):
3: from (irb):5
2: from (irb):5:in `rescue in irb_binding'
1: from CalendarWatcher.rb:xx: in `start'
Google::Apis::ClientError (notFound: Not Found)
Watch 달력 2는 사용할 수 없습니다. "Push notifications are not supported by this resource"
irb(main):00x:0> email = 'ja.japanese#[email protected]'
irb(main):00x:0> CalendarWatcher.start(client, email)
Traceback (most recent call last):
2: from (irb):3
1: from
CalendarWatcher.rb:xx: in `start'
Google::Apis::ClientError (pushNotSupportedForRequestedResource: Push notifications are not supported by this resource.)
Push Not Supported For Requested Resource 에서 설명한 대로 이 정보는 Push Not Supported For Requested Resource 에 알릴 수 없는 캘린더 리소스입니다.
또한 Google에서 제공하는 다음 달력에서는 Watch를 설정할 수 없습니다.같은 오류가 발생하다.
class CalendarWatcher
CALLBACK_URL = 'https://YOUR_SITE'
# client: Google::Apis::CalendarV3::CalendarService
# calendar_id: [email protected]
def self.start(client, calendar_id)
# Watchする対象期間は3日後とします。
expiration = Time.now.strftime('%s%L').to_i + (1000 * 60 * 60 * 24 * 3)
# Events:watch リクエストパラムの準備
req = Google::Apis::CalendarV3::Channel.new
req.id = SecureRandom.uuid
req.type = 'web_hook'
req.address = CALLBACK_URL
req.expiration = expiration.to_s
# Event:watch コールします。
client.watch_event(calendar_id, req)
end
end
irb(main):00x:0> email = '[email protected]'
irb(main):00x:0> CalendarWatcher.start(client, email)
=> #<Google::Apis::CalendarV3::Channel:xxx @id="d81482a7-300a-4c24-8242-39c213f89f22", @expiration=1552330683000, @kind="api#channel", @resource_id="xxxxxxxxxxxxxxx", @resource_uri="https://www.googleapis.com/calendar/v3/calendars/[email protected]/events?maxResults=250&alt=json">
irb(main):00x:0> email = '[email protected]'
irb(main):00x:0> CalendarWatcher.start(client, email)
Traceback (most recent call last):
3: from (irb):5
2: from (irb):5:in `rescue in irb_binding'
1: from CalendarWatcher.rb:xx: in `start'
Google::Apis::ClientError (notFound: Not Found)
irb(main):00x:0> email = 'ja.japanese#[email protected]'
irb(main):00x:0> CalendarWatcher.start(client, email)
Traceback (most recent call last):
2: from (irb):3
1: from
CalendarWatcher.rb:xx: in `start'
Google::Apis::ClientError (pushNotSupportedForRequestedResource: Push notifications are not supported by this resource.)
ja.japanese#[email protected]
#[email protected]
mlb_19_%4cos+%41ngeles+%44odgers#[email protected]
mlb_2_%42oston+%52ed+%53ox#[email protected]
추송 알림을 설정할 수 없는 달력이 있으니 고민하는 게 좋다는 것이다.
그보다 MLB 달력이 공개된 것은 깜짝 놀랐다.
Reference
이 문제에 관하여(구글 Calendar API Events:watch에서 사용할 수 없는 달력이 있습니다.), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/koshilife/items/0f861513d8965d321904텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)