如何让服务器访问Google Calendar API?

问题描述 投票:0回答:2

我正在尝试构建一个可以访问用户的Google Calendar API的网络应用,而不会实际存在。因此,基本上在后台从我的服务器(PHP脚本)添加或修改其Google日历中的事件。

我已经是Google Calendar的oauth2了,我有一个刷新令牌,所以他们不必每次都重新登录。他们只是登录oauth一次,他们很好。但是我如何才能使服务器可以在后台进行更改?

php oauth-2.0 google-api google-calendar-api google-oauth
2个回答
1
投票

我想到了。所以我所做的是将access_token存储在数据库中并检查访问令牌是否已过期。如果是,我会使用数据库中的refresh_token生成一个新的访问令牌。因此,每次服务器访问用户的帐户时,它都将使用数据库中的访问令牌。另外,请确保将访问类型设置为offline,如下所示:

$client->setAccessType('offline');

0
投票

如果您习惯于制作“普通”网页,那么异步工作通常会破坏工作流程,因为任何异步活动都会超出通常的请求生命周期。

您需要将异步任务委派给专用程序,进程或线程。这意味着使用一种排队系统并具有一个单独的进程,其工作是在排队系统中运行任务并更新状态。

如果你正在学习的路上,我建议你自己推出 - 最小的排队系统是一个很好的学习项目;您可以使用常规数据库管理系统将其推出。你必须注意竞争条件(提示:使用行锁)。

如果你正在进行制作,我建议使用像ZeroMQ这样的东西 - 我知道有很好的PHP绑定。

除了让您的网站更新并从排队系统中读取外,您还需要任务运行器 - 最简单的形式是预定作业;你可以做一个生活在while循环中的简单php脚本,睡眠一段时间(取决于你正在构建的软件的流量),检查作业队列中是否有东西,并在需要时进行更新。

您可能需要了解如何在每次计算机启动时运行进程以执行此操作,否则简单的系统重新启动会使您的设置生效。

最后,工作流程有点像这样:

  • 网站有一个检查队列的工具(我排队的东西还没有完成吗?我排队的东西已经完成了吗?我让用户知道这份工作已经完成了吗?等等)
  • 网站有一个用于将作业插入队列的工具
  • 与网站分开的进程可以不时检查队列,并使用事务结果对其进行更新
© www.soinside.com 2019 - 2024. All rights reserved.