要阅读 Google Buzz 活动,需要授权令牌。Web 应用程序将重定向到 Google 的登录页面,用户在该页面登录并将令牌返回给 Web 应用程序。
但是我有一个没有 UI 的本地 Java 应用程序(如脚本)。此应用程序知道用户名和密码。如何在不显示 Google 登录页面的情况下使用此用户名和密码获取授权令牌?
要阅读 Google Buzz 活动,需要授权令牌。Web 应用程序将重定向到 Google 的登录页面,用户在该页面登录并将令牌返回给 Web 应用程序。
但是我有一个没有 UI 的本地 Java 应用程序(如脚本)。此应用程序知道用户名和密码。如何在不显示 Google 登录页面的情况下使用此用户名和密码获取授权令牌?
这可能是个坏主意,但您可以使用像 HttpClient 这样的 HTTP 库来发出与用户相同的请求。您将需要使用标头监视实用程序来确定您需要访问哪些 URL 以及需要使用哪些标头,但可以自动执行此操作。如果 google 改变了他们的页面布局、ids、classes 或整体页面结构,你的解析代码将会中断。
此外,您还需要能够捕获来自服务器的返回响应,这将涉及在某个 Web 端点接收响应。这可以通过下面概述的解决方案 2 来解决。
总之。
解决方案 1 - 身份验证
解决方案 2 - 接收来自 google 的响应
localhost:****/whatever。 这一切都未经测试且高度理论化。可能有更好的方法来做到这一点,但要避免只打开 Web 浏览器并让用户登录,需要做很多工作。
简短的回答是你不能。您绝对不想尝试抓取 Google 登录页面或类似内容。
你最好的办法是做一个轻量级的嵌入式 Jetty 服务器,你可以用它来接收来自 Google OAuth 流的回调。这正是OACurl所做的,我们的 OAuth 感知 curl 包装器。代码在LoginCallbackServer.java中。