Google共享盘文件创建webhook返回200但无法接收推送通知求助
问题原因及修复方案
1 API端点调用错误
你当前使用的请求URI是文件元数据查询接口,并非webhook创建接口,正确的Google Drive文件变更监听(webhook创建)接口需要追加/watch后缀,完整路径为:https://www.googleapis.com/drive/v3/files/{fileId}/watch
你之前个人盘能收到通知,大概率是此前已经通过正确请求为个人盘文件创建过有效webhook,本次错误请求返回200仅为元数据查询接口的正常响应,并未实际创建新的webhook规则。
2 共享盘专属权限校验
共享盘webhook触发对账号权限和共享盘设置有额外要求:
- 生成Bearer令牌的Google账号,至少需要拥有目标共享盘文件的查看者权限,若监听的是共享盘整盘,则需要至少共享盘级别的查看者角色
- 联系共享盘管理员确认,共享盘设置中「限制第三方应用访问共享盘内文件」的开关未开启,该开关开启时会直接拦截所有第三方应用的事件推送请求
3 webhook配置字段错误
你请求体中的id字段为空值,该字段为webhook的唯一标识,不能为空,空值会导致Google服务端后续匹配推送目标时直接丢弃变更事件。此外expiration字段不能超过当前时间加7天,超出的有效期会被服务端自动忽略,同样会导致无事件推送。
修正后的请求参考
request({ method: 'POST', uri: `https://www.googleapis.com/drive/v3/files/{fileId}/watch`, json: true, body: { id: 'your_custom_unique_webhook_id', // 替换为自定义唯一标识 type: 'web_hook', address: 'your_webhook_receive_url', // 替换为你的接收地址 expiration: expiration_date, // 有效期不超过当前时间+7天 }, headers: { Authorization: `Bearer ${your_access_token}` }, // 补全完整的Bearer令牌 qs: { supportsAllDrives: true, includeItemsFromAllDrives: true }, })
内容的提问来源于stack exchange,提问作者Emily Pasiak
相关产品推荐
相关产品推荐

