6

我正在尝试使用此网址访问 Google 的待办事项提要:

https://www.google.com/calendar/tdl?secid=<SECID>&tdl={%22action_list%22%3A[{%22action_type%22%3A%22get_all%22%2C%22action_id%22%3A%221%22%2C%22list_id%22%3A%2215052708471047222911%3A0%3A0%22%2C%22get_deleted%22%3Afalse}]%2C%22client_version%22%3A-1}

如果我在浏览器中使用正确的 secid 打开它,它会正确显示我想要的。

现在,问题是:我如何以编程方式(特别是在 java 程序中)获得 secid?我可以访问 authToken(来自 CalendarService),但我不知道如何使用它来授权我访问上面的 URL。

我尝试使用网址http://google.com/accounts/ServiceLogin,但没有找到任何示例。

请问有什么帮助吗?

4

1 回答 1

1

从我读到secid的是从浏览器的 cookie 中获得的会话 ID。而您的案例使用 Java,这意味着服务器应用程序。如果是这种情况,您想secid完全放弃使用的想法。

相反,您想查看Google 的 OAuth2 文档。如果您使用的是 Java,那么您很可能会对Web 服务器 OAuth 流程感兴趣。特别注意时序图。

关键步骤包括:

1) 征得用户同意,从 Google OAuth 获取授权码。为此,您将用户重定向到具有适当范围的 Google。检查您的案例的日历范围列表。用户同意后,Google 会使用授权码重定向回您。

2) 使用授权代码和您的应用的凭据调用 Google OAuth 以交换访问令牌。

3) 使用访问令牌调用 Google 的日历 API。

And if you use Google's Java client as suggested by @ChaosPredictor, chances are some of the steps are already wrapped into the Java client (and your code will be much simpler).

于 2017-04-17T19:23:58.220 回答