Как получить доступ к серверу Google Calendar API? - PullRequest
0 голосов
/ 01 октября 2018

Я пытаюсь создать веб-приложение, которое получит доступ к пользовательскому API Календаря Google, хотя их там нет.Поэтому в основном добавляйте или изменяйте события в своем Календаре Google с моего сервера (сценарий PHP) в фоновом режиме.

Я уже oauth2 из Календаря Google и у меня есть для них токен обновления, поэтому им не нужно повторно-логинь каждый раз.Они просто входят в OAUT один раз, и они хороши.Но как я могу сделать так, чтобы сервер мог вносить изменения в фоновом режиме?

Ответы [ 2 ]

0 голосов
/ 06 октября 2018

Я понял это.Поэтому я сохранил access_token в базе данных и проверил, не истек ли токен доступа.Если бы это было так, я бы использовал refresh_token в базе данных для генерации нового токена доступа.Поэтому каждый раз, когда сервер будет обращаться к учетной записи пользователя, он будет использовать токен доступа из базы данных.Кроме того, убедитесь, что для типа доступа установлено значение offline, например:

$client->setAccessType('offline');
0 голосов
/ 01 октября 2018

Выполнение асинхронной работы обычно является нарушением рабочего процесса, если вы привыкли создавать «нормальные» веб-страницы, потому что любая асинхронная деятельность находится за пределами обычного жизненного цикла запроса.

Вам необходимо делегировать асинхронную задачу выделенной программе., процесс или поток.Это подразумевает использование своего рода системы очередей и наличие отдельного процесса, задачей которого является запуск задач в системе очередей и обновление статуса.

Если вы находитесь на пути к обучению, я бы посоветовал вамразверните свое собственное - минимальная система очередей - хороший учебный проект;Вы можете развернуть его, используя обычную систему управления базами данных.Вам нужно следить за условиями гонки (подсказка: используйте блокировки строк).

Если вы на пути к производству, я бы порекомендовал использовать что-то вроде ZeroMQ для этого - я понимаю, что есть хорошиеbindings for PHP.

Помимо обновления вашего веб-сайта и чтения из системы очередей, вам понадобится исполнитель задач - самая простая форма которого - запланированное задание;Вы могли бы сделать простой php-скрипт, работающий в цикле while, который некоторое время спит (в зависимости от трафика создаваемого вами программного обеспечения), проверяет, есть ли что-то в очереди заданий и выполняет обновления при необходимости.

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

В конце концов,рабочий процесс будет выглядеть примерно так:

  • На веб-сайте есть средство для проверки очереди (я ставил в очередь то, что еще не было завершено? Есть ли то, что я поставил в очередь, уже завершено?пользователь знает, что задание было выполнено? и т. д.)
  • Веб-сайт имеет возможность вставлять задания в очередь
  • Процесс , отдельный от веб-сайта , может проверятьвремя от времени, и обновляет его с результатом транзакций
...