【问题标题】:Google Calendar API: Unauthorized WebHook callback channelGoogle Calendar API:未经授权的 WebHook 回调通道
【发布时间】:2018-09-10 15:19:19
【问题描述】:

我想首先说我知道有几个问题恰好涉及到这一点,但这些都不是我的问题。另外,我想补充一点,我一直在努力解决这个问题。

我的问题是我正在尝试创建自动 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"    
   }                                                                         
  } 

(网址当然是示例,因为此时我不想分享正确的信息。)

我遵循了其他问题中关于确切问题的示例,但它们对我没有任何作用,而且它们似乎都是在黑暗中踢,因为文档对此几乎没有提及。创建通道的代码如下所示:

$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 和不使用任何架构输入它们,但无济于事。

请帮我一劳永逸地解决这个问题。

【问题讨论】:

    标签: php laravel google-calendar-api


    【解决方案1】:

    我得到了这个工作,这是如何工作的:

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

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

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

    如果我大胆猜测的话,我认为 OAuth 游乐场的某些东西在我们测试的早期阶段就搞砸了。为什么这并没有弄乱我无法回答的 Google 日历 API 中的其他功能,但这是我可以想象的唯一一点,它开始像以前那样运行。

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-07-18
      • 2021-04-15
      • 2014-11-02
      • 2014-10-22
      • 2012-11-19
      • 1970-01-01
      • 1970-01-01
      • 2016-04-13
      相关资源
      最近更新 更多