我正在尝试使用 SkyDrive REST API 从 Java 桌面客户端应用程序实现 OAuth 2.0 隐式授权。我使用以下代码:
Desktop.getDesktop().browse(new URL(st.toString()).toURI());
JOptionPane.showMessageDialog(null, "Press ok to continue once you have authenticated.");
我的代码打开网络浏览器并要求用户登录,然后 SkyDrive 以下列形式将访问令牌发送到浏览器 url:
https://login.live.com/oauth20_desktop.srf?lc=1033#access_token=EwAwAq1DBAAUlbRW.....
我想要做的是从我的 java 程序中读取这个访问令牌。我试图从控制台读取 httpconnection:
HttpURLConnection con = (HttpURLConnection) url.openConnection();
BufferedReader reader = new BufferedReader( new InputStreamReader(url.openStream()));
while(reader.readLine()!=null){
System.out.println(reader.readLine());
但似乎 java httpurlconnection 不处理 javascript 响应。它回复:
<html dir="..... Windows Live ID requires JavaScript to sign in. This web browser either does not support JavaScript, or scripts are being blocked......<body onload="evt_LoginHostMobile_onload(event);">
那么,有没有办法直接从java中检索访问令牌?