【问题标题】:Why am I not getting any notifications from the Google Drive API?为什么我没有收到来自 Google Drive API 的任何通知?
【发布时间】:2017-12-19 23:14:37
【问题描述】:

我相信我已经正确配置了所有内容,因为我在订阅时收到了同步消息,但在上传文件之后没有收到任何通知。

我做了以下事情:

  • 有一个工作端点,可以简单地输出收到的请求
  • 在开发控制台中启用了 Google Drive API
  • 端点由有效证书保护
  • 在 Google 开发者控制台中注册的端点 URL(添加到有效域中)
  • 创建了一个具有所有者权限的服务帐户(我知道这是个坏主意,但想确保这不是权限问题)
  • 使用https://www.googleapis.com/drive/v3/changes/watch订阅

我收到了有效的订阅响应,并且我的端点在 POST 到 /watch 后收到了一条消息,但在我对驱动器所做的任何更改(添加或删除文件)之后没有任何通知。

有谁知道为什么我在成功同步后却收不到通知?

这是端点收到的消息。 '起源'是这样的,因为我正在使用 Insomnia REST 客户端进行订阅。

{
"body": {},
"headers": {
    "X-Goog-Resource-ID": "xxxxxxxxxxxxxxx",
    "CloudFront-Viewer-Country": "US",
    "X-Amzn-Trace-Id": "Root=xxxxxxxxxxxxxxx",
    "X-Goog-Channel-Expiration": "Wed, 20 Dec 2017 01:39:47 GMT",
    "CloudFront-Is-Desktop-Viewer": "true",
    "CloudFront-Is-SmartTV-Viewer": "false",
    "X-Goog-Resource-URI": "https://www.googleapis.com/drive/v3/changes?includeCorpusRemovals=false&includeRemoved=true&includeTeamDriveItems=false&pageSize=100&pageToken=6&restrictToMyDrive=false&spaces=drive&supportsTeamDrives=false&alt=json",
    "User-Agent": "APIs-Google;(+https://developers.google.com/webmasters/APIs-Google.html)",
    "Host": "services.xxxxxxxxxxxxxxx.com",
    "CloudFront-Forwarded-Proto": "https",
    "Accept-Encoding": "gzip,deflate,br",
    "X-Forwarded-Port": "443",
    "X-Amz-Cf-Id": "xxxxxxxxxxxxxxx==",
    "CloudFront-Is-Tablet-Viewer": "false",
    "X-Goog-Resource-State": "sync",
    "Via": "1.1 xxxxxxxxxxxxxxx.cloudfront.net (CloudFront)",
    "X-Forwarded-For": "66.102.7.129, 52.46.30.57",
    "Accept": "*/*",
    "X-Forwarded-Proto": "https",
    "X-Goog-Channel-ID": "test-drive-file-notification",
    "CloudFront-Is-Mobile-Viewer": "false",
    "X-Goog-Message-Number": "1"
  }
}

【问题讨论】:

  • 除了只显示活动的仪表板之外,是否有任何类型的 Google API 活动日志?
  • 您是否设置了Drive Push Notifications 中提到的 webhook?
  • 感谢您对@noogui 发表评论!是的,我做到了。这就是我在上面引用的端点。我弄清楚了我的问题是什么。不是技术问题,我只是假设创建的凭据可以访问与我的帐户关联的谷歌云端硬盘,这意味着这些凭据模拟了我对云端硬盘的访问权限。事实证明这是不正确的。即使将凭证的客户电子邮件添加到文件夹的作者列表中也不会生成通知。我必须使用这些凭据创建一个文件夹,然后将我自己的帐户添加到它以访问它。直到那时,通知才开始流入。
  • 好东西你发现了。我确实注意到,因为您提到了“服务帐户”,您可能错误地认为它是您的帐户。事实上,服务帐户是自己的。

标签: google-api google-drive-api


【解决方案1】:

这个问题是基于错误的假设,即在 Google 开发者控制台中以我自己(与 GSuite 组织无关的帐户)身份登录时创建可访问 Google 云端硬盘的凭据意味着这些凭据会冒充我对云端硬盘的访问权限。事实证明这是不正确的。

获取通知的解决方案是使用这些凭据创建一个文件夹(其中服务帐户是所有者),然后将我自己的帐户添加到它以访问它。直到那时,通知才开始流入。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-04-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多