0

要阅读 Google Buzz 活动,需要授权令牌。Web 应用程序将重定向到 Google 的登录页面,用户在该页面登录并将令牌返回给 Web 应用程序。

但是我有一个没有 UI 的本地 Java 应用程序(如脚本)。此应用程序知道用户名和密码。如何在不显示 Google 登录页面的情况下使用此用户名和密码获取授权令牌?

4

2 回答 2

2

这可能是个坏主意,但您可以使用像 HttpClient 这样的 HTTP 库来发出与用户相同的请求。您将需要使用标头监视实用程序来确定您需要访问哪些 URL 以及需要使用哪些标头,但可以自动执行此操作。如果 google 改变了他们的页面布局、ids、classes 或整体页面结构,你的解析代码将会中断。

此外,您还需要能够捕获来自服务器的返回响应,这将涉及在某个 Web 端点接收响应。这可以通过下面概述的解决方案 2 来解决。

总之。

解决方案 1 - 身份验证

  1. 针对身份验证 URL 的HttpClient GET。
  2. TagSoup解析页面响应,存储页面所需的任何数据(如果有)。
  3. 如果需要, XOM xml 解析器可以处理来自 [1.2] 的响应。
  4. 针对授权 URL 的 HttpClient 请求

解决方案 2 - 接收来自 google 的响应

  1. 启动Jetty服务器。
  2. 验证时将您的响应 URL 设置为localhost:****/whatever
  3. 在 Jetty 中接受响应。在命令行应用程序中检索响应。

免责声明:

这一切都未经测试且高度理论化。可能有更好的方法来做到这一点,但要避免只打开 Web 浏览器并让用户登录,需要做很多工作。

于 2010-05-25T19:41:56.577 回答
2

简短的回答是你不能。您绝对不想尝试抓取 Google 登录页面或类似内容。

你最好的办法是做一个轻量级的嵌入式 Jetty 服务器,你可以用它来接收来自 Google OAuth 流的回调。这正是OACurl所做的,我们的 OAuth 感知 curl 包装器。代码在LoginCallbackServer.java中。

于 2010-05-28T02:05:57.063 回答