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

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何让服务器访问Google Calendar API?相关的知识,希望对你有一定的参考价值。

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

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

答案

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

$client->setAccessType('offline');
另一答案

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

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

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

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

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

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

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

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

以上是关于如何让服务器访问Google Calendar API?的主要内容,如果未能解决你的问题,请参考以下文章

如何从 Google Calendar API 获取刷新的令牌

无法验证服务器身份calendar.google

Google Calendar API 日历 ID 和事件 ID

即使似乎授予访问权限,Google Calendar API在OAuth期间也会出现403错误

使用 Firebase Auth 访问 Google Calendar API

如何通过 Javascript 中的 Google Calendar API 获取 Google Calendar 中事件的位置?