【发布时间】:2016-02-24 00:47:27
【问题描述】:
我想构建一个脚本,通过 Google 日历 PHP 客户端检查经过身份验证的用户的 Google 日历。我能够构建一个简单的页面,让用户进行身份验证并授予日历事件的权限。我收到一个令牌,然后通过以下方式获取 15 个即将发生的事件:
$googleCal = new Google_Service_Calendar($googleClient);
$results = $googleCal->events->listEvents($calendarId, $optParams);
但我正在苦苦挣扎的是如何保存它,这样我就可以让脚本每天检查它以查看是否添加了新事件。我认为我所拥有的只是努力越过终点线。
谢谢!
--
更新,我正在尝试使用刷新令牌,这是我的代码:
public function checkRedirectCode()
{
if(isset($_GET['code']))
{
$this->client->authenticate($_GET['code']);
// $this->setToken($this->client->getRefreshToken());
$this->setToken($this->client->getAccessToken());
$this->storeUser($this->getPayload());
return true;
}
return false;
}
public function setToken($token)
{
$_SESSION['access_token'] = $token;
$this->client->setAccessToken($token);
}
我已经能够回显刷新令牌,因此我知道我得到了正确的刷新令牌,但是每当我使用注释掉的字符串时都会出错。有什么想法吗?
【问题讨论】:
-
你试过使用'getEventsForDay(date)'吗?这将为您提供给定日期发生的所有事件。 developers.google.com/apps-script/reference/calendar/…
-
取回的token只在一个小时内有效,所以一定要改用刷新token,否则你将无法每天运行脚本。如果您希望我分享如何执行此操作,请告诉我,如果您已经在执行此操作,请道歉。
-
@jksn.co 如果你有一个例子,我会喜欢的!
-
@ChrisOlson 考虑一下这两个部分的工作。 1)您的原始脚本工作正常,您只需将刷新令牌保存到数据库,此时您不需要使用刷新令牌。 2) 构建一个每天运行的脚本(在 cron 上),它使用刷新令牌(就像我在下面的回答中一样)。
标签: php google-calendar-api google-api-php-client