代码之家  ›  专栏  ›  技术社区  ›  Clara

为什么我没有收到来自Google Drive API的任何通知?

  •  2
  • Clara  · 技术社区  · 7 年前

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

    我已经做了以下工作:

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

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

    有人知道为什么我在成功同步后仍无法收到通知吗?

    这是端点接收到的消息。“起源”是这样的,因为我正在使用失眠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"
      }
    }
    
    1 回复  |  直到 7 年前
        1
  •  0
  •   Clara    7 年前

    这个问题基于一个错误的假设,即在Google开发人员控制台中以本人身份登录(一个与GSuite组织无关的帐户)时创建访问Google Drive的凭据意味着凭据模拟了我对该驱动器的访问。事实证明这是错误的。

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