gpt4 book ai didi

php - 谷歌日历推送通知设置

转载 作者:IT王子 更新时间:2023-10-29 00:18:52 26 4
gpt4 key购买 nike

我正在尝试使用 PHP 和 V3 api 为 Google 日历设置推送通知。

我获得了 Auth2.0 权限,并且能够从我的应用程序在 google 上创建事件。现在我想知道用户何时对谷歌日历进行任何更改(CRUD 操作)。

这是我的代码:

private $imageService;
public $google_client;
public $google_calendar;

public function __construct()
{
$this->imageService = new ImageService();
$this->google_client = new Google_Client();
$this->google_client->setApplicationName($_ENV['GOOGLE_APP_NAME']);
$this->google_client->setDeveloperKey($_ENV['GOOGLE_API_KEY']);
$this->google_client->setClientId($_ENV['CLIENT_ID']);
$this->google_client->setClientSecret($_ENV['CLIENT_SECRET']);
$this->google_client->setAccessType('offline');
$this->google_client->setIncludeGrantedScopes(true);
$this->google_client->setScopes(array('email', 'profile', 'https://www.googleapis.com/auth/plus.me', 'https://www.googleapis.com/auth/calendar'));
$this->google_calendar = new Google_Service_Calendar($this->google_client);

}

public function googleCalendarWatch($uuid){

$channel = new Google_Service_Calendar_Channel($this->google_client);
$channel->setId($uuid);
$channel->setType('web_hook');
$channel->setAddress("https://example.com/google/googleNotifications");
$channel->setExpiration("1919995862000");
$this->google_calendar->events->watch('primary', $channel);

}

这是输出:

Google_Service_Calendar_Channel Object (
[internal_gapi_mappings:protected] => Array ( )
[address] =>
[expiration] => 1426272395000
[id] => aee2b430-34bf-42bc-a597-ada46db42799
[kind] => api#channel
[params] =>
[payload] =>
[resourceId] => 51IKGpOwCJ6EMraQMUc1_04MODk
[resourceUri] => https://www.googleapis.com/calendar/v3/calendars/primary/events?key=AIzaSyBFUvq3OZO6ugAKvz7l8NgLS0V6DUJq8Vc&alt=json
[token] =>
[type] =>
[modelData:protected] => Array ( )
[processed:protected] => Array ( ) )

到目前为止,我不知道为什么 address 返回 null,也许这就是问题所在。但我不知道如何修复它。

同时阅读:#26730263和查看我自己的代码没有太大区别。

我做了谷歌所说的所有事情,注册域,添加凭据,api key ,允许推送域等等。

最佳答案

为每个单独的资源创建一个通知 channel ,然后您将收到对该资源的任何修改。以下信息直接来自 Google(创建通知 channel )。

发出监视请求:

每个可观察的 Google Calendar API 资源在以下形式的 URI 处都有一个关联的观察方法:

https://www.googleapis.com/**apiName**/**apiVersion**/**resourcePath**/watch

要为有关特定资源更改的消息设置通知 channel ,请向该资源的监视方法发送 POST 请求。每个通知 channel 都与特定用户和特定资源(或资源集)相关联。除非当前用户拥有或有权访问此资源,否则观看请求不会成功。

示例:

开始观察给定日历上事件集合的变化:

POST https://www.googleapis.com/calendar/v3/calendars/my_calendar@gmail.com/events/watch
Authorization: Bearer auth_token_for_current_user
Content-Type: application/json

{
"id": "01234567-89ab-cdef-0123456789ab", // Your channel ID.
"type": "web_hook",
"address": "https://example.com/notifications", // Your receiving URL.
...
"token": "target=myApp-myCalendarChannelDest", // (Optional) Your channel token.
"expiration": 1426325213000 // (Optional) Your requested channel expiration time.
}
}

引用:Google (Creating notification channels)(2018 年 3 月 19 日)。

  • 地址?
  • token ?

关于php - 谷歌日历推送通知设置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28462466/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com