使用https://developers.google.com/admin-sdk/directory/v1/guides/push#creating-notification-channels上的文档,我使用以下内容订阅了通知:
service = build('admin', 'directory_v1', credentials=credentials)
watch_data = {
'id': str(uuid.uuid1()),
'type': 'web_hook',
'address': 'https://example.appspot.com/push/user',
'payload': True,
}
subscription = service.users().watch(domain=domain, event='update', body=watch_data).execute()
# 'subscription' is stored
我得到了适当的答复,到目前为止一切似乎都很好。
在我尝试使用以下代码停止通知之前:
# 'subscription' is retrieved from the storage
service = build('admin', 'directory_v1', credentials=credentials)
stop_data = {
'id': subscription.id,
'resourceId': subscription.resource_id
}
request = service.channels().stop(body=stop_data)
request.execute()
这会引发'HttpError'404异常:
Response: <HttpError 404 when requesting https://www.googleapis.com/admin/directory/v1/admin/directory_v1/channels/stop? returned "Not Found">
有趣的是,使用相同的参数(来自同一用户的已知良好'id'和'resourceId'),https://developers.google.com/admin-sdk/directory/v1/reference/channels/stop处的API资源管理器小工具以同样的方式失败。
我也无法在完整的API资源管理器中找到此端点。
我认为这一发现有些行为不端。
客户建立的URI是:'https://www.googleapis.com/admin/directory/v1/admin/directory_v1/channels/stop'
而文件说明它应该是:
'https://www.googleapis.com/admin/directory/v1/channels/stop'。
这可能是API中的错误吗?
我会尝试尽快制作一个“手动”认证请求来检查这个假设。
编辑2016-11-09:
使用以下代码尝试手动请求:
# 'subscription' is retrieved from the storage
stop_data = {
'id': subscription.id,
'resourceId': subscription.resource_id
}
http = httplib2.Http()
http = credentials.authorize(http)
url = 'https://www.googleapis.com/admin/directory/v1/channels/stop'
method = 'POST'
response, content = http.request(url, method, body=json.dumps(stop_data),
headers={'content-type': 'application/json'})
结果我仍然得到404。所以我猜这个问题不是端点URI。
如果谷歌的某位读到此内容,请您查看一下吗?
这不是超级关键,但我不希望悬挂通知订阅。
编辑2 2016-11-09:
感谢@ Mr.Rebot指出报告API错误报告。 经过仔细检查,这里的问题完全相同。 使用上面的手动请求代码,但用下划线调整URI,我终于能够成功发出请求(返回204)。
url = 'https://www.googleapis.com/admin/directory_v1/channels/stop'
因此肯定存在某个错误并且以下文档页面具有错误的端点URI:
还发现了这篇相关帖子:Google Admin SDK Channel Stop endpoint is broken in client libraries
答案 0 :(得分:0)
对于那些在过去两年中谷歌Docs地狱中的奇迹而且数不胜数的人。
错误/正确的网址是:
https://www.googleapis.com/admin/reports_v1/channels/stop
使用此网址的范围是:
https://www.googleapis.com/auth/admin.reports.audit.readonly
我希望这有助于某人:)