2017-08-06 48 views
0

我正在尝试将OAuth 2身份验证实施到Box(Cloud Storage Service)的Java代码中。 OAuth 2实现代码取自OAuth 2 essentials我如何从浏览器中获取url到我的java代码?

如你所知,oAuth有两个阶段。第一阶段要求客户端发送http GET或POST请求到this link,同时发送一些客户端凭证。于是我打开上述网址在浏览器里面,从我的Java代码中使用这段代码(Main.java):

if(Desktop.isDesktopSupported()) 
    { 
     Desktop.getDesktop().browse(new URI(authorizationUrl.toString())); 
    } 
  1. 在浏览器中,我可以看到的网页,客户端必须提供电子邮件和密码授予访问我的应用程序。一切顺利,在授予访问权限后,浏览器被重定向到由我提供的redirect_uri,这是我本地主机中的一个java servlet类(我不知道servlet是否真的需要这个过程,但我正在使用它)。

  2. 这个redirect_uri现在从我提供的那个扩展,因为它有服务器提供的代码和状态参数。 (注:现场的这部分是发生在浏览器中,而我的Main.java其调用浏览器仍在运行并等待exteded REDIRECT_URI我要养活它)那么,如何养活

将来自浏览器(或servlet类)的redirect_uri扩展到在oauth进程的第一段调用浏览器的Main.java类。

回答

0

而不是做这个的是主要应用

if(Desktop.isDesktopSupported()) { 
     Desktop.getDesktop().browse(new URI(authorizationUrl.toString())); 
} 

你为什么不叫一个servlet做重定向到https://account.box.com/api/oauth2/authorize与所需的参数,然后传回的代码和状态。

将处理OAuth的逻辑写入servlet,并使用URLConnection从主应用程序调用servlet。 OAuth完成后,将代码和状态从servlet返回到主应用程序。

+0

不错!我会试试看..谢谢! – golem

+0

发生的事情是:1. Main.java调用OAuthHandler servlet(它使Http请求使用参数)和服务器响应的HTML表单,客户端必须输入电子邮件和密码并授予对应用程序的访问权限。所以这个html表单需要显示浏览器,所以我必须使用方法Desktop.getDesktop()。browse()对吗?或者还有其他方法吗? – golem

相关问题