Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/238.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 谷歌日历API:未经授权的WebHook回调通道_Php_Laravel_Google Calendar Api - Fatal编程技术网

Php 谷歌日历API:未经授权的WebHook回调通道

Php 谷歌日历API:未经授权的WebHook回调通道,php,laravel,google-calendar-api,Php,Laravel,Google Calendar Api,首先,我想说,我知道有几个问题与此相关,但没有一个是我的问题。另外,我想补充一点,我已经在这件事上做了一段时间了 我的问题是,我正在尝试创建一个自动的谷歌频道刷新,特别是一个关于事件的观看频道。我已经有一个完整的工作设置,我们可以同步两种方式到谷歌日历。剩下要解决的唯一问题是,我目前通过邮递员创建和刷新手表频道,至少可以说这不是最佳选择 我已经设置了一个服务帐户,在获取、同步、创建和删除多个日历中的事件时,该帐户可以正常工作。我有一个域,我成功地证明了其所有权,并且该站点使用来自可信来源的SSL

首先,我想说,我知道有几个问题与此相关,但没有一个是我的问题。另外,我想补充一点,我已经在这件事上做了一段时间了

我的问题是,我正在尝试创建一个自动的谷歌频道刷新,特别是一个关于事件的观看频道。我已经有一个完整的工作设置,我们可以同步两种方式到谷歌日历。剩下要解决的唯一问题是,我目前通过邮递员创建和刷新手表频道,至少可以说这不是最佳选择

我已经设置了一个服务帐户,在获取、同步、创建和删除多个日历中的事件时,该帐户可以正常工作。我有一个域,我成功地证明了其所有权,并且该站点使用来自可信来源的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文件
  • 从新帐户重新验证我对域的所有权
  • 在“我的域验证”页面上输入域
如果我胡乱猜测的话,我想OAuth操场在我们测试的早期阶段出了问题。为什么这没有搞乱谷歌日历API中的其他函数,我没有答案,但这是我能想象的唯一一点,它开始像它那样工作

我希望这至少能帮助你们中的一个。如果我在5年后回到这里寻找答案,至少我会帮助自己