Google calendar api Push通知:401 - 未经授权的WebHook回调频道

时间:2016-10-20 13:55:43

标签: push-notification google-calendar-api

该问题的任何解决方案。这似乎不起作用

{
 "error": {
  "errors": [
   {
    "domain": "global",
    "reason": "push.webhookUrlUnauthorized",
    "message": "Unauthorized WebHook callback channel: https://xxxxx"
   }
  ],
  "code": 401,
  "message": "Unauthorized WebHook callback channel: https://xxxxx"
 }
}

无论如何要解决这个问题

3 个答案:

答案 0 :(得分:2)

推送通知要求您验证域名所有权,因此无法在API资源管理器中创建,因为它不提供将请求与您已验证的项目相关联的方法所有权。如果您使用项目凭据,则可以在OAuth Playground中完成此操作,如下所述:

  • 配置API项目:

    1. 访问https://console.developers.google.com/project/
    2. 上的API项目
    3. 确保您已根据https://developers.google.com/admin-sdk/directory/v1/guides/push#registering-your-domain上的说明注册了您网站的HTTPS版本。
    4. 来自产品&服务菜单(左上角有三条水平线),选择“API Manager”,然后选择“Enabled API”选项卡,并确保启用了相应的API。
    5. 选择“凭据”,然后从“添加凭据”下拉列表中选择“Oauth客户端ID”。
    6. 如果之前未配置,系统会提示您配置同意屏幕,因此请点击“配置许可屏幕”。如果是,请输入您的电子邮件地址,产品名称,然后点击“保存”。
    7. 选择' Web应用程序',然后输入客户端ID的名称。
    8. Under'授权Javascript起源'输入' https://developers.google.com。'
    9. 在'授权重定向URI'下,输入' https://developers.google.com/oauthplayground'。
    10. 点击“创建客户ID”。
  • 配置OAuth Playground:

    1. 导航至https://developers.google.com/oauthplayground/
    2. 点击右上角的“OAuth 2.0配置”(齿轮图标)。
    3. 选中“使用您自己的OAuth凭据”。
    4. 将API项目的“凭据”页面中的“客户ID”粘贴到“OAuth客户端ID”中。
    5. 将API项目的“凭据”页面中的“客户端密钥”粘贴到“OAuth客户端密钥”中。
    6. 点击“关闭”。
  • 授权API请求:

    1. 在“输入您自己的范围”中输入https://www.googleapis.com/auth/admin.directory.user
    2. 点击“授权API”。
    3. 系统会提示您允许对您的域进行API访问,因此请点击“允许访问”。
    4. 您会看到响应'HTTP / 1.1 302 Found'。点击'兑换令牌的授权码'。
    5. 你应该看到'HTTP / 1.1 200 OK'。该页面将在短时间内下载到下一部分。
    6. 选择POST作为' HTTP方法。'
    7. 点击'输入请求正文',然后输入您的请求,例如:

      { "id": "c887ce64-adc8-4007-952c-a172c376b30d", "type": "web_hook", "address": "https://example.com/watch" }

    8. 点击'关闭'完成后。

    9. 输入要监控的资源的URI,将{calendarId}替换为相应的日历ID,例如: https://www.googleapis.com/calendar/v3/calendars/user@example.com/events/watch
    10. 点击发送请求。'

    11. 您应该收到类似的回复:

      { "resourceId": "DmuNd7MI-w7qwW1FxDNf_pdqk7Y", "kind": "api#channel", "expiration": "1507327087000", "id": "c887ce64-adc8-4007-952c-a172c376b30d", "resourceUri": "https://www.googleapis.com/calendar/v3/calendars/user@example.com/events?maxResults=250&alt=json" }

注意:其他API的推送通知(例如Directory API)可能包含其他参数。有关详细信息,请查看相关参考文档。

答案 1 :(得分:1)

要在Google日历中使用Push Notifications,请务必按照此处的说明操作:

  1. 在Google Dev Console中注册接收网址的域名。转到凭据,然后单击域验证以进行webhook设置。
  2. enter image description here

    例如,如果您打算使用https://yourdomainexample.com/notifications作为接收网址,则需要注册https://yourdomainexample.com。 设置您的接收URL,或者#34; Webhook"回叫接收器。

    1. 这是一个HTTPS服务器,用于处理资源更改时触发的API通知消息。

    2. 为要监视的每个资源端点设置通知通道。

    3. 通道指定通知消息的路由信息​​。作为频道设置的一部分,您可以标识要接收通知的特定URL。每当频道的资源发生变化时,Google Calendar API都会向该网址发送一条通知消息作为POST请求。

      您也可以查看此SO thread以获取更多参考资料。

答案 2 :(得分:1)

此修复程序帮助我解决了这个问题。我没有在谷歌应用程序授权的重定向网址中提到回调链接。 添加后,我能够生成观看事件,并且能够接收推送通知消息