我正在尝试使用PHP和V3API为Google日历设置推送通知
我已经获得了Auth2.0权限,并且可以从我的应用程序在google上创建事件。现在我想知道用户何时对谷歌日历进行任何更改(CRUD操作)
这是我的代码:
私人$imageService;
公共$google_客户端;
公共$google_日历;
公共函数构造()
{
$this->;imageService=new-imageService();
$this->;谷歌客户端=新谷歌客户端();
$this->;谷歌客户端->;设置应用程序名($\u ENV['google\u应用程序名]);
$this->;google\u client->;setDeveloperKey($\u ENV['google\u API\u KEY');
$this->;google\u client->;setClientId($\u ENV['client\u ID');
$this->;google\u client->;setClientSecret($\u ENV['client\u SECRET']);
$this->;谷歌客户端->;setAccessType('offline');
$this->;谷歌客户端->;设置IncludeGrandScopes(真);
$this->;谷歌客户端->;设置范围(数组('email','profile','https://www.googleapis.com/auth/plus.me', 'https://www.googleapis.com/auth/calendar'));
$this->;谷歌日历=新的谷歌服务日历($this->;谷歌日历客户端);
}
公共功能googleCalendarWatch($uuid){
$channel=新的Google\u服务\u日历\u频道($this->;Google\u客户端);
$channel->;setId($uuid);
$channel->;setType('web_hook');
$channel->;设置地址(";https://example.com/google/googleNotifications");
$channel->;setExpiration(";1919995862000";);
$this->;谷歌日历->;事件->;观看($primary',$channel);
}
这是输出:
Google\u服务\u日历\u频道对象(
[内部\u gapi\u映射:受保护]=>;数组()
[地址]=>;
[到期日]=>;1426272395000
[id]=>;aee2b430-34bf-42bc-a597-ada46db42799
[种类]=>;api#频道
[参数]=>;
[有效负载]=>;
[resourceId]=>;51IKGpOwCJ6EMraQMUc1\u 04MODk
[resourceUri]=>;https://www.googleapis.com/calendar/v3/calendars/primary/events?key=AIzaSyBFUvq3OZO6ugAKvz7l8NgLS0V6DUJq8Vc&;alt=json
[令牌]=>;
[类型]=>;
[modelData:protected]=>;数组()
[已处理:受保护]=>;阵列())
到目前为止,我不知道为什么地址返回null,也许这就是问题所在。但我不知道如何修复它
同时阅读以下内容:#26730263和查看我自己的代码没有太大区别
我做了谷歌说的所有事情,注册域名,添加凭证,api密钥,允许推送域名等等
为每个单独的资源创建一个通知通道,然后将通知您对该资源的任何修改。以下信息直接来自谷歌(创建通知渠道)
发出监视请求:
每个可监视的Google日历API资源在以下形式的URI中都有一个关联的监视方法:
https://www.googleapis.com/**apiName**/**apiVersion**/**resourcePath**/watch
要为有关特定资源更改的消息设置通知通道,请向资源的watch方法发送POST请求。
每个通知通道都与特定用户和特定资源(或一组资源)相关联。除非当前用户拥有或拥有访问此资源的权限,否则监视请求将不会成功。
示例:
开始监视给定日历上事件集合的更改:
POSThttps://www.googleapis.com/calendar/v3/calendars/[email protected]/events/watch
授权:当前用户的承载身份验证令牌
内容类型:application/json
{
“id”:“01234567-89ab-cdef-0123456789ab”,//您的频道id。
“类型”:“网钩”,
“地址”:https://example.com/notifications“,//您的接收URL。
...
“令牌”:“target=myApp myCalendarChannelDest”/(可选)您的信道令牌。
“到期”:1426325213000/(可选)您请求的频道到期时间。
}
}
参考:谷歌(创建通知渠道)(2018年3月19日)
- 地址
- 代币