HTTP GET: получить список событий календаря Google через API календаря Google v3 - ошибка неверного ключа

Я уже довольно давно использовал действие HTTP GET в Tasker на Android 4.4, чтобы получать мои будущие события календаря Google. Эта задача больше не работает, так как Google закрыл API v2.

Для API v3 требуется аутентификация. Пытался получить клиентский ключ из консоли разработчика. Я создал новый проект и активировал для него API календаря. Затем я создал новый идентификатор клиента, и у меня есть этот идентификатор клиента с соответствующим ключом. Как я могу получить список моих (будущих) событий из моего личного календаря Google через HTTP GET и эту информацию для аутентификации? Я пытаюсь использовать:

https://www.googleapis.com/calendar/v3/calendars/my_calendar_ID/events?singleEvents=true&key=my_client_key

Это возвращает ошибку:

{
 "error": {
  "errors": [
   {
    "domain": "usageLimits",
    "reason": "keyInvalid",
    "message": "Bad Request"
   }
  ],
  "code": 400,
  "message": "Bad Request"
 }
}

Что я делаю неправильно? Заранее спасибо!


person Dominic    schedule 18.11.2014    source источник


Ответы (2)


Обычно эта ошибка возникает, когда ключ, использованный в запросе, недействителен. В запросе вы должны использовать открытый ключ, а не секрет клиента (когда вы хотите отправить ключ API). Вот ссылка для документации о том, как сделать общедоступным ключ к вашему приложению.

Кроме того, здесь есть ссылка для документации по HTTP запрос на мероприятия получить запрос.

person SGC    schedule 19.11.2014
comment
Спасибо! Мне удалось получить публичный ключ API. Но что ж, теперь я получаю еще одно сообщение об ошибке. {error: {errors: [{domain: global, cause: notFound, message: Not Found}], code: 404, message: Not Found}} Я понял, что это используется тот же запрос, что и в примере Google в описании API . Полагаю, это означает, что у меня нет доступа к этому. Когда я пытаюсь получить полный календарь с помощью ключа API, возвращается ошибка 401 (не авторизован) ... - person Dominic; 20.11.2014
comment
Я получаю то же сообщение "Не найден" или "Не авторизован". Как вы ее решили? - person K-RAD; 19.04.2015

Всем, кто пытается добиться того же и кому не нужно использовать API v3 любой ценой:

Еще есть возможность получать будущие события с запросом, аналогичным API v2. Поэтому используйте приватный XML-код из настроек календаря и добавьте нужные вам параметры. Например.:

HTTP GET http://www.google.com/calendar/feeds/your_email/private-validation/basic?futureevents=true&max-results=1&singleevents=true&orderby=starttime&sortorder=ascending

Мне не удалось найти свежую документацию от Google по этому поводу, но она работает. Основное отличие от API v2 - это "/ basic?" в конце вместо старого "/ full?". В остальном большинство параметров работают нормально.

futureevents=true - only shows future events
max-results=integer - only show integer number of results
singleevents=true - handly reoccuring events as single events
orderby=starttime - sort results by their starting time instead of last update
sortorder=ascending - well, sort order

"printpretty", похоже, больше не поддерживается. Кроме того, теперь отметка времени имеет другой вид. Но все же вся необходимая информация включена.

В приведенном выше примере показан запрос следующего события в календаре. Его можно распространить на несколько событий (например, max-results = 5). Другие параметры необходимы для отображения следующих событий, как ожидалось, вместо некоторых, казалось бы, случайных событий. Проблема с этим методом, конечно, заключается в том, что в запросе используется ваш частный адрес, который может быть небезопасным по сравнению с API v3.

person Dominic    schedule 28.11.2014