Php 谷歌日历API:未经授权的WebHook回调通道
首先,我想说,我知道有几个问题与此相关,但没有一个是我的问题。另外,我想补充一点,我已经在这件事上做了一段时间了 我的问题是,我正在尝试创建一个自动的谷歌频道刷新,特别是一个关于事件的观看频道。我已经有一个完整的工作设置,我们可以同步两种方式到谷歌日历。剩下要解决的唯一问题是,我目前通过邮递员创建和刷新手表频道,至少可以说这不是最佳选择 我已经设置了一个服务帐户,在获取、同步、创建和删除多个日历中的事件时,该帐户可以正常工作。我有一个域,我成功地证明了其所有权,并且该站点使用来自可信来源的SSL。正如我所说,其他一切都在按预期进行 解决眼前的问题;尝试在命令中创建新的监视频道时,我在问题主题中收到错误消息:Php 谷歌日历API:未经授权的WebHook回调通道,php,laravel,google-calendar-api,Php,Laravel,Google Calendar Api,首先,我想说,我知道有几个问题与此相关,但没有一个是我的问题。另外,我想补充一点,我已经在这件事上做了一段时间了 我的问题是,我正在尝试创建一个自动的谷歌频道刷新,特别是一个关于事件的观看频道。我已经有一个完整的工作设置,我们可以同步两种方式到谷歌日历。剩下要解决的唯一问题是,我目前通过邮递员创建和刷新手表频道,至少可以说这不是最佳选择 我已经设置了一个服务帐户,在获取、同步、创建和删除多个日历中的事件时,该帐户可以正常工作。我有一个域,我成功地证明了其所有权,并且该站点使用来自可信来源的SSL
{
"error": {
"errors": [
{
"domain": "global",
"reason": "push.webhookUrlUnauthorized",
"message": "Unauthorized WebHook callback channel: https://subdomain.yourdomain.app"
}
],
"code": 401,
"message": "Unauthorized WebHook callback channel: https://subdomain.yourdomain.app"
}
}
(URL当然是示例,因为此时我不想共享正确的信息。)
我遵循了在其他问题中看到的关于确切问题的例子,但它们对我没有任何帮助,而且它们似乎都是在黑暗中进行的,因为文档对此几乎没有说明。创建通道的代码如下所示:
$calendar = GoogleCalendarFactory::createForCalendarId($calendarId);
$service = $calendar->getService();
$channel = new Google_Service_Calendar_Channel();
$channel->setId('a-random-id');
$channel->setType('web_hook');
$channel->setAddress('https://subdomain.yourdomain.app');
$result = $service->events->watch($calendarId, $channel);
我确实已经验证了“subdomain.yourdomain.app”和“yourdomain.app”的所有权,并且在我的域验证中将它们都作为添加域。我试着用HTTPS、HTTP输入它们,但没有任何模式,都没有用
请帮我一劳永逸地解决这个问题。我成功地解决了这个问题,以下是解决方法: 对于将来来这里遇到同样问题的人,我的建议是为这个项目创建一个新的谷歌账户。我知道这对你们中的许多人来说可能是不可能的,但它对我起了作用,我只能推测原因 重申一下,我的解决办法如下:
$calendar = GoogleCalendarFactory::createForCalendarId($calendarId);
$service = $calendar->getService();
$channel = new Google_Service_Calendar_Channel();
$channel->setId('a-random-id');
$channel->setType('web_hook');
$channel->setAddress('https://subdomain.yourdomain.app');
$result = $service->events->watch($calendarId, $channel);
- 在谷歌上创建了一个新帐户
- 为日历应用程序创建了一个新项目
- 创建了一个新的服务帐户,并在站点上安装了新的JSON文件
- 从新帐户重新验证我对域的所有权
- 在“我的域验证”页面上输入域