【发布时间】:2017-07-25 10:35:27
【问题描述】:
我需要订阅 Google Calendar API v3 推送通知。我检查了文档 - 它提供了有用的 API 详细信息。我检查了java client 库。它包含有用的类...
尝试:
com.google.api.services.calendar.Calendar calendar = initObject();
...
calendar.calendarList().get("myMail@ukr.net").execute();
因此,我有CalendarListEntry 带有我的日历信息的地图。
尝试使用相同的 calendarClient 对象:
calendar.calendarList().watch(channel).execute();
结果:
17:46:26,540 ERROR # c.n.c.c.g.GoogleCalendarClient.watchCalendarList com.google.api.client.googleapis.json.GoogleJsonResponseException: 401 Unauthorized
我似乎遇到了授权问题。我想我不应该有一个,因为我可以再尝试一个相同的client 对象,它会返回正确的结果。我也考虑过使用 optional token 字段的情况 - 没有变化。
如果有人需要我的频道对象: 17:58:38,022 INFO # {"address":"https://myPersonalVerifiedByGoogleAddr/google/calendars/","id":"4ac3e9e3-8428-405e-a8ed-6cf0e4fa25ff","payload":false,"type":"web_hook"}
address - my inet address verified by google
id - generated
payload - false (because of no content in my request)
type - web_hook (following google doc)
我不知道如何修复观看请求中的未授权,因为客户端已授权(我将无法加载日历信息)。
【问题讨论】:
-
您可能想尝试通过发送http request 来测试它,以验证它是否只是 OAuth 令牌问题。接下来是验证您是否已完成make a watch request 的所有必需步骤。这将缩小您遇到问题的可能原因。
-
@Mr.Rebot
"reason": "push.webhookUrlUnauthorized"。我已经在论坛中检查过这个问题,但答案对我没有帮助。 (我的应用程序已注册并验证,我只注册了domain name,尝试推送通知我使用addressdomainName/google/calendars/)。我的网络中没有 ssl 证书(只有 google 验证文件来确认我的域)... -
@Mr.Rebot,我必须在我的网络中使用 SSL(如果我想集成 google)吗?
-
我使用ngrok proxy。我希望它能解决 SSL 问题。
-
我认为是这样,在文档中它声明“只有在您的网络服务器上安装了有效的 SSL 证书时,Google 日历 API 才能向此 HTTPS 地址发送通知。”跨度>
标签: java google-calendar-api google-api-java-client