Php Google Cal API-检查事件的脚本
我想构建一个脚本,通过GoogleCalendarPHP客户端检查经过身份验证的用户的GoogleCalendar。我能够构建一个简单的页面,允许用户对日历事件进行身份验证和授予权限。我收到一个代币,然后通过以下方式获取15个即将举行的活动:Php Google Cal API-检查事件的脚本,php,google-calendar-api,google-api-php-client,Php,Google Calendar Api,Google Api Php Client,我想构建一个脚本,通过GoogleCalendarPHP客户端检查经过身份验证的用户的GoogleCalendar。我能够构建一个简单的页面,允许用户对日历事件进行身份验证和授予权限。我收到一个代币,然后通过以下方式获取15个即将举行的活动: $googleCal = new Google_Service_Calendar($googleClient); $results = $googleCal->events->listEvents($calendarId, $optParams
$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);
}
我已经能够回显刷新令牌,所以我知道我得到了一个正确的刷新令牌,但是每当我使用注释掉的字符串时,我都会出错。有什么想法吗?要使您的脚本能够在原始访问令牌的生存期(仅持续一个小时)之后被调用,您需要在初始授权期间检索并存储刷新令牌,然后在每次脚本运行时使用它生成新的访问令牌 访问令牌的生存期有限。如果您的应用程序需要访问 对于超过单个访问令牌生命周期的Google API,它可以 获取刷新令牌。刷新令牌允许应用程序 获取新的访问令牌 (4.如有必要,刷新访问令牌。) 用户对应用程序进行身份验证后,它们将返回到您的重定向URI,并带有
code
查询字符串
以下是验证和获取刷新令牌的示例(这使用分析,但对于其他服务应相同):
然后,在运行每日脚本时,使用刷新令牌(从数据库检索)生成新的访问令牌:
$client = new Google_Client();
$client->setClientId('xxx');
$client->setClientSecret('yyy');
$client->addScope(Google_Service_Analytics::ANALYTICS_READONLY);
$client->refreshToken($user->refresh_token);
$newToken = $client->getAccessToken();
$client->setAccessToken($newToken);
您是否尝试过使用“getEventsForDay(date)”?这将为您提供在给定日期发生的所有事件。您返回的令牌仅在一小时内有效,因此请确保使用刷新令牌,否则您将无法每天运行脚本。如果你想让我分享如何做到这一点,请告诉我,如果你已经这么做了,请道歉。@jksn.co如果你有一个例子,我会喜欢的@克丽索森将此工作分为两部分。1) 您的原始脚本工作正常,只需将刷新令牌保存到数据库中,此时不需要使用刷新令牌。2) 构建一个每天(在cron上)运行的脚本,使用刷新令牌(如下面我的回答中所示)。你能看看我在最初的帖子中所做的更新吗?我一直在尝试使用我的刷新代码,我正确地得到了它(你可以看到注释掉的行),但它不起作用。想法?刷新令牌时,是否需要设置范围?或者可以在没有任何显式作用域的情况下检索新的访问令牌吗?
$client = new Google_Client();
$client->setClientId('xxx');
$client->setClientSecret('yyy');
$client->addScope(Google_Service_Analytics::ANALYTICS_READONLY);
$client->refreshToken($user->refresh_token);
$newToken = $client->getAccessToken();
$client->setAccessToken($newToken);