没有收到 Google-Drive 推送通知
Posted
技术标签:
【中文标题】没有收到 Google-Drive 推送通知【英文标题】:Not getting Google-Drive push notifications 【发布时间】:2013-07-24 10:50:32 【问题描述】:我正在关注文档https://developers.google.com/drive/push 以接收来自 Google 云端硬盘的推送通知。
-
我的域已注册(在 API 控制台的 API 访问窗格中)。
我在注册域中有一个自定义程序通过 tpps 监听(带有自签名证书)。 https://myveryowndomain.bc.com/drive/notifications
为任何更改正确创建通知渠道(获取响应代码 200)。
我对我的 Google 云端硬盘文件进行了更改,但 2 没有任何效果,甚至没有同步消息。
我错过了什么吗?
CONFIG: -------------- REQUEST --------------
POST https://www.googleapis.com/drive/v2/changes/watch
Accept-Encoding: gzip
Authorization: Bearer 1/QRYL1ZHO4KyUmjkbHVWXCWglxJ5e6-xxxxxxxxxxxxx
User-Agent: push-test-project Google-HTTP-Java-Client/1.15.0-rc (gzip)
Content-Type: application/json; charset=UTF-8
Content-Length: 150
Jul 24, 2013 6:02:04 PM com.google.api.client.http.HttpRequest execute
CONFIG: curl -v --compressed -X POST -H 'Accept-Encoding: gzip' -H 'Authorization: Bearer 1/QRYL1ZHO4KyUmjkbHVWXCWglxJ5e6-xxxxxxxxxxxxx' -H 'User-Agent: push-test-project Google-HTTP-Java-Client/1.15.0-rc (gzip)' -H 'Content-Type: application/json; charset=UTF-8' -d '@-' -- 'https://www.googleapis.com/drive/v2/changes/watch' << $$$
Jul 24, 2013 6:02:04 PM com.google.api.client.util.LoggingByteArrayOutputStream close
CONFIG: Total: 155 bytes
Jul 24, 2013 6:02:04 PM com.google.api.client.util.LoggingByteArrayOutputStream close
CONFIG: "address":"https://myveryowndomain.bc.com/drive/notifications","id":"f143f7ba-759a-42b8-8748-e39a71ba13cc","type":"web_hook"
Jul 24, 2013 6:02:08 PM com.google.api.client.http.HttpResponse <init>
CONFIG: -------------- RESPONSE --------------
HTTP/1.1 200 OK
ETag: "RFvxxXV9yoZniidCHgcusodAlXI/AaEAn8d9Ma5bpJZNmM0F72Crxxx"
Content-Length: 247
X-XSS-Protection: 1; mode=block
Expires: Fri, 01 Jan 1990 00:00:00 GMT
Server: GSE
X-Content-Type-Options: nosniff
Pragma: no-cache
Cache-Control: no-cache, no-store, max-age=0, must-revalidate
X-Frame-Options: SAMEORIGIN
Date: Wed, 24 Jul 2013 09:02:08 GMT
Content-Encoding: gzip
Content-Type: application/json; charset=UTF-8
Jul 24, 2013 6:02:08 PM com.google.api.client.util.LoggingByteArrayOutputStream close
CONFIG: Total: 296 bytes
Jul 24, 2013 6:02:08 PM com.google.api.client.util.LoggingByteArrayOutputStream close
CONFIG:
"kind": "api#channel",
"id": "f143f7ba-759a-42b8-8748-e39a71ba13cc",
"resourceId": "_X2yFKJJ6yLq3eIrw3OSxxxxxxx",
"resourceUri": "https://www.googleapis.com/drive/v2/changes?includeDeleted=true&includeSubscribed=true&maxResults=100&alt=json",
"token": "",
"expiration": "1374660126357"
【问题讨论】:
Expires: Fri, 01 Jan 1990 00:00:00 GMT 响应正常吗? 过期是Wed, 24 Jul 2013 10:02:06 GMT
。
【参考方案1】:
自签名 SSL 似乎是这里的问题。这不仅仅是关于加密。这也是关于信任问题。 您可以从 StartSSL 或 CACert 获得免费 SSL。
仅供参考,过期标头不是频道的过期时间。这是关于缓存的信息。 您可以在响应正文的“过期”字段中找到您的频道实际过期时间。它以 unix 时间格式表示,您的响应“1374660126357”实际上是“Wed, 01 Apr 45531 03:05:57 GMT”。更改频道的默认到期时间为 1 周。
【讨论】:
1) 如果文档中提到自签名证书还不够,那就太好了。 2)即使考虑到隐私和安全,出于开发目的设置真正的 SSL 也有点过分。 3) 能够查看通知的 Google 端日志(在 API 控制台或其他地方)将有很大帮助。例如,无效证书错误,通知发送到myveryowndomain.bc.com/drive/notifications以上是关于没有收到 Google-Drive 推送通知的主要内容,如果未能解决你的问题,请参考以下文章