如何在不显示Googles登录页面的情况下使用用户名和密码获取Google Buzz的OAuth令牌?

时间:2010-05-25 19:19:35

标签: oauth google-buzz

要阅读Google Buzz活动,请authorization token is required。 Web应用程序将重定向到Googles登录页面,用户登录该页面并将令牌返回给Web应用程序。

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

2 个答案:

答案 0 :(得分:2)

这可能是一个坏主意,但您可以使用像HttpClient这样的HTTP库来向用户提出相同的请求。您需要使用标题查看实用程序来确定需要访问的URL以及需要使用的标头,但可以自动执行此操作。如果谷歌改变了他们的页面布局,idclass es或整个页面结构,那么您的解析代码就会中断。

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

总结。

解决方案1 ​​ - 验证

  1. HttpClient获取身份验证网址。
  2. TagSoup解析页面响应,存储页面所需的任何数据(如果有的话)。
  3. 如果需要,
  4. XOM xml解析器可以处理来自[1.2]的响应。
  5. 针对授权网址的HttpClient请求
  6. 解决方案2 - 接收来自Google的响应

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

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

答案 1 :(得分:2)

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

您最好的选择是使用轻量级嵌入式Jetty服务器,用于接收来自Google OAuth流程的回调。这正是我们的OAuth感知卷曲包装器OACurl所做的。该代码位于LoginCallbackServer.java