我将CRM系统与谷歌日历同步。为了做到这一点,我要求我的用户谷歌日历push notifications
进入我的系统。我已经成功地创建了一块手表,并将到期时间设置为2030年,但当我收到手表事件的响应时,它显示手表的到期时间被设置为一个月。
问题:
- 这是否意味着我需要每月刷新系统中每个用户日历的手表
- 有没有办法让手表不受限制
我的代码:
$channel = new Google_Service_Calendar_Channel($client);
$uuid = gen_uuid();
$channel->setId($uuid);
$channel->setType('web_hook');
$channel->setExpiration('1919995862000');
$address = $sugar_config['site_url'] . "/index.php?entryPoint=updateFromCal";
$channel->setAddress($address);
$watchEvent = $service->events->watch($bean->google_cal_id_c, $channel);
回应:
[address] =>
[expiration] => 1417667348000
[id] => 87453668-b1fd-4468-beca-xxxxxxxxxxxx
[kind] => api#channel
[params] =>
[payload] =>
[resourceId] => xxxxxxxxx-xxxxxxxxxxx
[resourceUri] => https://www.googleapis.com/calendar/v3/calendars/xxxxxx@gmail.com/events?key=xxxxxxxxxxxxxxxxxxxxWHxxxxxxalt=json
[token] =>
[type] =>
[modelData:protected] => Array
通知通道可以有一个到期时间,其值由您的请求或任何Google Calendar API内部限制或默认值确定(使用更严格的值)。目前还没有自动续订通知通道的方法。当通道接近到期时,必须通过调用watch方法创建一个新通道。这是有关通知渠道的更多文档的链接。
您可以创建一个Oauth和服务帐户,并使用它来验证您的Google日历请求:
1-转到gcp,创建一个项目,启用日历api,创建oAuth帐户并创建服务帐户。
2-创建oAuth后,下载oAuth json文件。
3-创建服务帐户后,转到keys
并创建一个新的json密钥,然后下载。(您将使用这个进行身份验证)
4-转到你想用你的api访问的日历,并添加与你之前创建的谷歌服务帐户共享日历,根据你的需求设置权限
完成后,现在您可以访问api,而无需刷新令牌,也无需创建令牌。您只需要在文件中添加oauth-json和服务帐户json,并在需要时调用它们。您应该使用jwtClient
来创建您的身份验证。其余的都应该是一样的。