Google Calendar API:未经授权的WebHook回调通道

时间:2018-09-10 15:19:20

标签: php laravel google-calendar-api

我首先要说的是,我知道有两个问题完全与此有关,但没有一个问题完全是我的问题。另外,我想补充一点,就是我已经为此花了一段时间。

我的问题是我正在尝试创建自动的Google频道刷新,特别是有关事件的观看频道。我已经有了一个可以正常工作的设置,可以将两种方式同步到Google日历。唯一需要解决的问题是,我目前是通过Postman创建和刷新观看频道的,至少可以说这不是最佳选择。

我已经设置了一个服务帐户,该服务帐户可以在多个日历中提取,同步,创建和删除事件时按预期工作。我拥有一个已成功证明其所有权的域,并且该站点使用来自受信任来源的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和没有任何模式输入它们,但都无济于事。

请帮我彻底解决这个问题。

1 个答案:

答案 0 :(得分:1)

我已经开始工作了,这就是方法:

对于以后遇到同样问题的任何人,我的技巧是为该项目创建一个新的Google帐户。我知道这可能对你们中的许多人来说都是不可能的,但是它对我有用,我只能推测原因。

重申一下,我的解决方法如下:

  • 在Google上创建一个新帐户
  • 为日历应用程序创建了一个新项目
  • 创建一个新的服务帐户并在网站上安装新的JSON文件
  • 通过新帐户重新验证我对域的所有权
  • 在我的域验证页面上输入了域

如果我要大胆地猜测,我认为OAuth运动场的某些东西在我们测试的早期就搞砸了。为什么这没有弄乱我没有答案的Google Calendar API中的其他功能,但这是我可以想象的开始发挥作用的唯一点。

我希望这对您至少有帮助。如果我5年后回到这里寻找答案,至少我会有所帮助。

相关问题