API Календаря Google v3 PHP и JSON

Иметь общедоступный Календарь Google, где все, что я хочу сделать, это получать события от «сегодня» до n (или макс.) Событий. Я бегал кругами, пытаясь это выяснить, либо это устарелая информация, либо, похоже, не работают подмены. Хорошим путем решения является использование PHP для генерации начального списка событий с помощью css goodness и массива javascript, чтобы я мог обновлять детализацию DIV, когда пользователь нажимает на событие.

Используя PHP и загрузив последнюю версию API на сервер, создайте проект календаря с учетной записью только для чтения, идентификатором клиента OAuth 2.0 и ключом API. Завершил работу с несколькими учебниками, но столкнулся с проблемой, потому что вам нужен файл ./credentials/calendar-api-quickstart.json, который генерируется через командную строку. Сервер, который я должен использовать, является общим, поэтому нет доступа к командной строке (по понятным причинам :)). Использовал https://developers.google.com/google-apps/calendar/quickstart/php Информация. Кажется, это единственный кусок, который мне не хватает?

Активировал ключ тоже через информацию на этой странице Учетные данные API Календаря Google версии 3 но получаю ошибку «invalid_grant». Я перепробовал все, что было найдено в поиске, но ничего не работает. Существует ли точное учебное пособие (2016–2017 гг.), Которое поможет вам получить данные Календаря Google на своем сайте? От настройки проекта до oauth2 и генерации токенов. Я должен что-то испортить, потому что ничего не работает.

Единственное другое решение — заставить их экспортировать календарь в формате .ics, но при обновлении календаря Google им нужны обновления в режиме реального времени.

Потому что я просто хочу прочитать данные, я попробовал предложение здесь Получить JSON из общедоступного Календаря Google. Но я получаю ошибку Forbidden Error 403, поэтому она устарела?

До сих пор не понимаю, почему они сделали это настолько сложным … Я понимаю, что нужно пройтись по всем вопросам, если вы хотите взаимодействовать с календарем на вашем сайте или в приложении, а просто читать данные в общем календаре (который предупреждает вас о это публично, что все это видят)?

Спасибо

1

Решение

Наконец-то нашел решение. Публикация здесь и может сделать полное руководство позже, если у меня будет свободное время :). Надеюсь, это поможет другим.

https://console.developers.google.com/iam-admin/projects
создать проект, который должен привести вас в консоль после его создания … если не здесь, ссылка на консоль https://console.developers.google.com/

в разделе библиотеки включите «API Календаря Google». Найдите Google Calendar API, выберите его и используйте кнопку включения, которая отображается вверху.

Перейдите в раздел учетных данных и добавьте ключ учетной записи службы. Новая учетная запись службы (любое имя, которое вы хотите).

Рулоны:

Проект> Просмотр

App Engine> Средство просмотра App Engine

Хранение> Средство просмотра хранилища

Тебе могут не понадобиться все это, но, похоже, это то сочетание, которое сработало для меня. Убедитесь, что выбран JSON, затем при создании он загрузит файл .json. Он загружается только один раз без возможности повторной загрузки, поэтому убедитесь, что вы загружаете и сохраняете его в безопасном месте.

Загрузите последнюю версию API для PHP здесь https://developers.google.com/google-apps/calendar/downloads и загрузить его туда, где на вашем сайте. Довольно большой, с большим количеством файлов поддержки, поэтому загрузка может занять некоторое время.

Тогда это код PHP, который работал для меня 🙂

CALENDARID это идентификатор вашего календаря …
из вашего календаря Google, используйте всплывающее окно и выберите «настройки календаря». Затем в нижней части раздела «Адрес календаря» запишите идентификатор календаря. должен быть какой-то адрес электронной почты google .com или ваш адрес электронной почты, если вы настроили его с помощью инструментов gSuite.

«YOURJSON.json» это имя файла json, который вы скачали ранее. Чтобы сделать его более безопасным, загрузите его над корневым каталогом на своем сайте и укажите ссылку на него. Так как он имеет только роли чтения, он не должен вызывать никаких проблем, так что на всякий случай — больше здравомыслия.

require_once строка, где вы загрузили API Google на свой сервер. Не забудьте часть /vendor/autoload.php :).

Это решение, которое сработало для меня (2017-04-24). Последняя строка кода PHP представляет собой общую команду echo, поэтому вы можете увидеть полученный массив и все доступные данные. Единственное, что я не вижу в этом, — это собственный цвет события. Есть место для этого, но, кажется, не подходит.

<?php
$maxEvents = 100;
$minStartDate = date('c');
$calendarId = 'CALENDARID';

//path to the google API on your server
require_once 'inc/google-api-php-client-2.1.3_PHP54/vendor/autoload.php';
//set environment variable to use your downloaded Service account key
putenv("GOOGLE_APPLICATION_CREDENTIALS=YOURJSON.json");
$scope = 'https://www.googleapis.com/auth/calendar.readonly';

$client = new Google_Client();
$client->useApplicationDefaultCredentials();
$client->setScopes($scope);
$service = new Google_Service_Calendar($client);

//options link
//  https://developers.google.com/google-apps/calendar/v3/reference/events/list
$options = array(
'maxResults' => $maxEvents,
'orderBy' => 'startTime',
'singleEvents' => TRUE,
//UNIX timestamp format
'timeMin' => $minStartDate,
//to use a calendar other than the default uncomment and enter the calendar's ID
//not really needed here since you're using the $calendarId but does pull another calendar and more for completeness
//'iCalUID' => 'CAL_ID_FROM_GOOGLE_CALENDAR'
);

$results = $service->events->listEvents($calendarId, $options);
//echo 'results<br><pre>';print_r($results); echo '</pre><br>';
?>
2

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector