设置webhook会导致未经授权的WebHook回调频道' 。一切都应该没问题

时间:2014-09-04 15:52:16

标签: push-notification google-api google-drive-api

是时候去SE了,因为现在花了我4个多小时。

我正在尝试设置来自Google Drive API的推送通知的webhook(https://app.example.com/notications)。

设置完所有内容后,我收到错误:

    ...
    errors": [
        {
            "domain": "global",
            "reason": "push.webhookUrlUnauthorized",
            "message": "Unauthorized WebHook callback channel: https://app.example.com"
        }
    ],
    ...

谷歌上有一些结果(大部分都在SE上)讨论这个问题。所提出的解决方案似乎都不适合我。毋庸置疑,如果我有一些东西,我会把头发撕掉。

这是我尝试过的事情:

正如here所述,有一些要求:

  1. 第1步:验证您是否拥有该域。 (使用网站站长工具完成网站验证流程)

    通过网站站长工具注册app.example.com。另外还验证example.com虽然这不重要。 查看!

  2. 第2步:注册您的域名:

    • 转到Google Developers Console。
    • 选择或创建项目。
    • 在左侧边栏中,点击API& auth,然后单击Push。
    • 点击添加域。
    • 填写表单,然后再次点击添加域名。

    完成app.example.com查看!

  3. 请注意,只有在您的网络服务器上安装了有效的SSL证书时,Drive API才能向此HTTPS地址发送通知。无效的证书包括:

    • 自签名证书。
    • 由不受信任的来源签署的证书。
    • 已撤销的证书。
    • 主题与目标主机名不匹配的证书。

    我做了什么:

    • 我已使用SSL证书设置app.example.com
    • 此外,端点可以访问,所有内容都会检出。
    • SSL checker已经确认一切正常(5个滴答)。甚至SSL链也正确设置。 查看!
  4. 构建POST查询

    • 到简单的https://www.googleapis.com/drive/v2/changes/watch端点
    • 包含Authorization: Bearer x标题
    • 包含Content-Type:application/json标题
  5. 帖子包含一个正文如下

        {
          "id": "someIdThatDoesntMatter",
          "type":"web_hook",
          "address": "https://app.example.com/notifications"
        }
    

    查看!

    我通过Postman运行所有这些(Chrome扩展程序用于测试http请求),因此我的应用程序中没有可以干扰的应用程序。

    究竟是什么问题?

2 个答案:

答案 0 :(得分:0)

这很奇怪,但是以某种方式起作用。

  1. 添加域时,请使用带有https://app.example.com/notifications的完整URL

在进行日历API调用时,尝试使用带有斜杠的完整URL

{
  "id": "someIdThatDoesntMatter",
  "type":"web_hook",
  "address": "https://app.example.com/notifications/"
}

答案 1 :(得分:-4)

第4步的POST正文地址:“https://app.captured.io/notifications”应为“https://app.example.com/notications”。或者相反。无论哪种方式,它们都应该匹配,这样我们才能理解这只是你帖子中的拼写错误还是真正回答你的问题。 :)

哦;在“https://app.example.com/notications”中,“通知”拼写错误。它应该是:“https://app.example.com/notifications”。 ......或者反过来,如果这是你的事情:)

根据他们的文件,这也值得注意:

  

除非当前用户或服务帐户拥有或有权访问此资源,否则监视请求将无法成功。