drive.changes.watch 不发送通知
Posted
技术标签:
【中文标题】drive.changes.watch 不发送通知【英文标题】:drive.changes.watch don't sends notifications 【发布时间】:2016-04-09 18:45:55 【问题描述】:我将 googleapis npm 包 ("apis/drive/v3.js") 用于 Google Drive 服务。在后端,我使用 NodeJS 和 ngrok 进行本地测试。我的问题是我无法收到通知。 以下代码:
drive.changes.watch(
pageToken: startPageToken,
resource:
id: uuid.v1(),
type: 'web_hook',
address: 'https://7def94f6.ngrok.io/notifications'
, function(err, result)
console.log(result)
);
返回一些类似:
kind: 'api#channel',
id: '8c9d74f0-fe7b-11e5-a764-fd0d7465593e',
resourceId: '9amJTbMCYabCkFvn8ssPrtzWvAM',
resourceUri: 'https://www.googleapis.com/drive/v3/changes?includeRemoved=true&pageSize=100&pageToken=6051&restrictToMyDrive=false&spaces=drive&alt=json',
expiration: '1460227829000'
当我尝试更改 Google 云端硬盘中的任何文件时,都不会收到通知。亲爱的大学,怎么了?
【问题讨论】:
您是否在 Google 注册并验证了7def94f6.ngrok.io?看到这个页面:developers.google.com/drive/v3/web/push#overview 是的,我有!但是,当我尝试在这里传递参数时:developers.google.com/drive/v3/reference/changes/watch#try-it 我得到了这个错误:“error”:“errors”:[“domain”:“global”,“reason”:“push.webhookUrlUnauthorized”,“ message": "未经授权的 WebHook 回调通道:7def94f6.ngrok.io/notifications" ], "code": 401, "message": "未经授权的 WebHook 回调通道:7def94f6.ngrok.io/notifications" 【参考方案1】:这应该是一条评论,但我没有足够的(50 分)经验来发表评论。抱歉,如果这不是一个真正的答案,但可能会有所帮助。
我今天学到了这一点。我和你做的几乎一样——只是不是使用 Drive,而是使用 Gmail api。 我看到你有这个错误:
"push.webhookUrlUnauthorized", "message": "Unauthorized WebHook etc..."
我认为这是因为以下两个原因之一:
您没有授予 Drive-api 发布者对您的主题的权限。
其次,如果您想接收通知,则必须在服务器(您的项目)和您的发布/订阅服务(Google Cloud)上都设置授权的 webHooks Url。
见下文 - 对我来说,此设置有效:
1. Create a topic
2. Give the Drive publish permissions to your topic. This is done by adding the Drive scope in the box and following steps 2 and 3.
3. Configure authorized WebHooks. Form the Create Topic page - click on add subscriptions. Not rely vizible here but once you are there you can manage.
【讨论】:
感谢 Alon 提供如此详细的描述。我按照你的指南,但我有同样的问题。最近,在这里创建了新问题 (***.com/questions/36528336/…)以上是关于drive.changes.watch 不发送通知的主要内容,如果未能解决你的问题,请参考以下文章