Google 日历 api 推送通知:401 - 未经授权的 WebHook 回调通道
Google calendar api Push notification: 401 - Unauthorized WebHook callback channel
问题的任何解决方案。这似乎不起作用
{
"error": {
"errors": [
{
"domain": "global",
"reason": "push.webhookUrlUnauthorized",
"message": "Unauthorized WebHook callback channel: https://xxxxx"
}
],
"code": 401,
"message": "Unauthorized WebHook callback channel: https://xxxxx"
}
}
无论如何都要解决这个问题
要在 Google 日历中使用 Push Notifications,请确保您遵循此处的说明:
- 在 Google Dev Console 中注册您接收 URL 的域。转到凭据并单击域验证以进行 webhook 设置。
例如,如果您打算使用https://yourdomainexample.com/notifications
作为您的接收URL,您需要注册https://yourdomainexample.com
。
设置接收 URL 或 "Webhook" 回调接收器。
这是一个 HTTPS 服务器,用于处理资源更改时触发的 API 通知消息。
为您要监视的每个资源端点设置一个通知通道。
通道指定通知消息的路由信息。作为频道设置的一部分,您可以确定要接收通知的具体 URL 位置。每当频道的资源发生变化时,Google 日历 API 会向该 URL.
发送一条通知消息作为 POST 请求
您也可以查看此 SO thread 以获取更多参考。
此修复帮助我解决了问题。我没有在 google 应用程序授权的重定向 url 中提到回调 link。
添加后,我能够生成监视事件并且能够接收推送通知消息
推送通知需要您验证域所有权,因此不能在 API 资源管理器中创建,因为它不提供将请求与您已验证的项目相关联的方法所有权。如果您使用项目凭证,这可以在 OAuth Playground 中完成,详情如下:
配置API项目:
- 在 https://console.developers.google.com/project/ 访问您的 API 项目。
- 确保您已根据 https://developers.google.com/admin-sdk/directory/v1/guides/push#registering-your-domain 中的说明注册了您网站的 HTTPS 版本。
- 从“产品和服务”菜单(左上角的三个水平线),select“API 管理器”,然后是“已启用 APIs”选项卡,并确保启用适当的 API。
- Select“凭据”,然后从“添加凭据”下拉列表中,select“Oauth 客户端 ID”。
- 如果之前没有配置,系统会提示您配置同意屏幕,因此请点击“配置同意屏幕”。如果是,请输入您的电子邮件地址、产品名称,然后点击“保存”。
- Select 'Web Application',然后输入客户端 ID 的名称。
- 在'Authorized Javascript Origins'下输入'https://developers.google.com.'
- 在 'Authorised redirect URIs' 下,输入“https://developers.google.com/oauthplayground”。
- 点击“创建客户端 ID”。
配置 OAuth 游乐场:
- 导航到 https://developers.google.com/oauthplayground/。
- 点击右上角的“OAuth 2.0 配置”(齿轮图标)。
- 选中“使用您自己的 OAuth 凭据”。
- 将 API 项目的“凭据”页面中的“客户端 ID”粘贴到“OAuth 客户端 ID”中。
- 将 API 项目的“凭据”页面中的“客户端密码”粘贴到“OAuth 客户端密码”中。
- 点击“关闭”。
授权 API 请求:
- 在“输入您自己的范围”中输入https://www.googleapis.com/auth/admin.directory.user。
- 点击“授权 APIs”。
- 系统将提示您允许 API 访问您的域,因此请单击“允许访问”。
- 您将看到响应“HTTP/1.1 302 Found。”点击“交换令牌授权码”。
- 您应该看到“HTTP/1.1 200 OK”。稍后页面将下拉到下一部分。
- Select POST 作为 'HTTP method.'
点击'Enter request body',输入您的要求,例如:
{
"id": "c887ce64-adc8-4007-952c-a172c376b30d",
"type": "web_hook",
"address": "https://example.com/watch"
}
完成后点击'Close'。
- 输入您要监控的资源的 URI,将 {calendarId} 替换为适当的日历 ID,例如:
https://www.googleapis.com/calendar/v3/calendars/user@example.com/events/watch
点击'Send the request.'
您应该会收到类似于以下内容的回复:
{
"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,可能有其他参数。查看相关参考文档以了解详细信息。
问题的任何解决方案。这似乎不起作用
{
"error": {
"errors": [
{
"domain": "global",
"reason": "push.webhookUrlUnauthorized",
"message": "Unauthorized WebHook callback channel: https://xxxxx"
}
],
"code": 401,
"message": "Unauthorized WebHook callback channel: https://xxxxx"
}
}
无论如何都要解决这个问题
要在 Google 日历中使用 Push Notifications,请确保您遵循此处的说明:
- 在 Google Dev Console 中注册您接收 URL 的域。转到凭据并单击域验证以进行 webhook 设置。
例如,如果您打算使用https://yourdomainexample.com/notifications
作为您的接收URL,您需要注册https://yourdomainexample.com
。
设置接收 URL 或 "Webhook" 回调接收器。
这是一个 HTTPS 服务器,用于处理资源更改时触发的 API 通知消息。
为您要监视的每个资源端点设置一个通知通道。
通道指定通知消息的路由信息。作为频道设置的一部分,您可以确定要接收通知的具体 URL 位置。每当频道的资源发生变化时,Google 日历 API 会向该 URL.
发送一条通知消息作为 POST 请求您也可以查看此 SO thread 以获取更多参考。
此修复帮助我解决了问题。我没有在 google 应用程序授权的重定向 url 中提到回调 link。 添加后,我能够生成监视事件并且能够接收推送通知消息
推送通知需要您验证域所有权,因此不能在 API 资源管理器中创建,因为它不提供将请求与您已验证的项目相关联的方法所有权。如果您使用项目凭证,这可以在 OAuth Playground 中完成,详情如下:
配置API项目:
- 在 https://console.developers.google.com/project/ 访问您的 API 项目。
- 确保您已根据 https://developers.google.com/admin-sdk/directory/v1/guides/push#registering-your-domain 中的说明注册了您网站的 HTTPS 版本。
- 从“产品和服务”菜单(左上角的三个水平线),select“API 管理器”,然后是“已启用 APIs”选项卡,并确保启用适当的 API。
- Select“凭据”,然后从“添加凭据”下拉列表中,select“Oauth 客户端 ID”。
- 如果之前没有配置,系统会提示您配置同意屏幕,因此请点击“配置同意屏幕”。如果是,请输入您的电子邮件地址、产品名称,然后点击“保存”。
- Select 'Web Application',然后输入客户端 ID 的名称。
- 在'Authorized Javascript Origins'下输入'https://developers.google.com.'
- 在 'Authorised redirect URIs' 下,输入“https://developers.google.com/oauthplayground”。
- 点击“创建客户端 ID”。
配置 OAuth 游乐场:
- 导航到 https://developers.google.com/oauthplayground/。
- 点击右上角的“OAuth 2.0 配置”(齿轮图标)。
- 选中“使用您自己的 OAuth 凭据”。
- 将 API 项目的“凭据”页面中的“客户端 ID”粘贴到“OAuth 客户端 ID”中。
- 将 API 项目的“凭据”页面中的“客户端密码”粘贴到“OAuth 客户端密码”中。
- 点击“关闭”。
授权 API 请求:
- 在“输入您自己的范围”中输入https://www.googleapis.com/auth/admin.directory.user。
- 点击“授权 APIs”。
- 系统将提示您允许 API 访问您的域,因此请单击“允许访问”。
- 您将看到响应“HTTP/1.1 302 Found。”点击“交换令牌授权码”。
- 您应该看到“HTTP/1.1 200 OK”。稍后页面将下拉到下一部分。
- Select POST 作为 'HTTP method.'
点击'Enter request body',输入您的要求,例如:
{ "id": "c887ce64-adc8-4007-952c-a172c376b30d", "type": "web_hook", "address": "https://example.com/watch" }
完成后点击'Close'。
- 输入您要监控的资源的 URI,将 {calendarId} 替换为适当的日历 ID,例如:
https://www.googleapis.com/calendar/v3/calendars/user@example.com/events/watch
点击'Send the request.'
您应该会收到类似于以下内容的回复:
{ "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,可能有其他参数。查看相关参考文档以了解详细信息。