我正在尝试使用此网址访问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打开它,它会向我显示我想要的内容。
现在,问题是:如何以编程方式获取secid(特别是在java程序中)?我可以访问authToken(来自CalendarService),但我不知道如何使用它来授权我访问上面的URL。
我尝试使用网址http://google.com/accounts/ServiceLogin,但我没有找到任何示例。
请帮忙吗?
答案 0 :(得分:1)
根据我的阅读secid
,是从浏览器的Cookie中获取的会话ID。而您的案例使用的Java意味着服务器应用程序。如果是这种情况,您想放弃完全使用secid
的想法。
相反,您想查看Google's OAuth2 documentation。如果您使用的是Java,那么您很可能对the web-server OAuth flow感兴趣。特别注意序列图。
关键步骤包括:
1)经用户同意,从Google OAuth获取授权码。为此,您可以使用适当的范围将用户重定向到Google。查看calendar scopes的列表以了解您的情况。用户同意后,Google会使用授权码重定向回给您。
2)使用授权码和您应用的凭据调用Google OAuth,以换取访问令牌。
3)使用访问令牌调用Google的Calendar API。
如果您按照@ChaosPredictor的建议使用Google的Java客户端,那么有些步骤可能已经包含在Java客户端中(并且您的代码将更加简单)。