· 7 years ago · Oct 06, 2018, 10:28 PM
1<%@ page contentType="text/html; charset=iso-8859-1" language="java" %>
2<%@ page import="org.apache.commons.httpclient.*"%>
3<%@ page import="org.apache.commons.httpclient.methods.*"%>
4<%@ page import="org.json.JSONObject"%>
5<%@ page import="org.json.JSONArray"%>
6<%@ page import="java.io.*" %>
7<%@ include file="OauthStorage.jsp" %>
8<%@ include file="config.jsp" %>
9
10<%
11//Initialize some variables here, check if relevant variables were passed in, if not then check session, otherwise set default.
12String scope = "WAP";
13String accessToken = "";
14String refreshToken = "";
15String expires_in = "";
16Long date = System.currentTimeMillis();
17
18 //This application uses the Autonomous Client OAuth consumption model
19 //Check if there is a valid access token that has not expired
20 if(date < savedAccessTokenExpiry) {
21 accessToken = savedAccessToken;
22 } else if(date < savedRefreshTokenExpiry) { //Otherwise if there is a refresh token that has not expired, use that to renew and save to file
23 String url = FQDN + "/oauth/token";
24 HttpClient client = new HttpClient();
25 PostMethod method = new PostMethod(url);
26 String b = "client_id=" + clientIdAut + "&client_secret=" + clientSecretAut + "&grant_type=refresh_token&refresh_token=" + savedRefreshToken;
27 method.addRequestHeader("Content-Type","application/x-www-form-urlencoded");
28 method.setRequestBody(b);
29 int statusCode = client.executeMethod(method);
30 JSONObject rpcObject = new JSONObject(method.getResponseBodyAsString());
31 accessToken = rpcObject.getString("access_token");
32 refreshToken = rpcObject.getString("refresh_token");
33 expires_in = rpcObject.getString("expires_in");
34 savedAccessTokenExpiry = date + (Long.parseLong(expires_in)*1000);
35 savedRefreshTokenExpiry = date + Long.parseLong("86400000");
36 method.releaseConnection();
37 PrintWriter outWrite = new PrintWriter(new BufferedWriter(new FileWriter(application.getRealPath("/OauthStorage.jsp"))), false);
38 String toSave = "\u003C\u0025\nString savedAccessToken = \"" + accessToken + "\";\nLong savedAccessTokenExpiry = Long.parseLong(\"" + savedAccessTokenExpiry + "\");\nString savedRefreshToken = \"" + refreshToken + "\";\nLong savedRefreshTokenExpiry = Long.parseLong(\"" + savedRefreshTokenExpiry + "\");\n\u0025\u003E";
39 outWrite.write(toSave);
40 outWrite.close();
41 } else if(date > savedRefreshTokenExpiry) { //Otherwise get a new access token and refresh token, and save them to file
42 String url = FQDN + "/oauth/token";
43 HttpClient client = new HttpClient();
44 PostMethod method = new PostMethod(url);
45 String b = "client_id=" + clientIdAut + "&client_secret=" + clientSecretAut + "&grant_type=client_credentials&scope=" + scope;
46 method.addRequestHeader("Content-Type","application/x-www-form-urlencoded");
47 method.setRequestBody(b);
48 int statusCode = client.executeMethod(method);
49 JSONObject rpcObject = new JSONObject(method.getResponseBodyAsString());
50 accessToken = rpcObject.getString("access_token");
51 refreshToken = rpcObject.getString("refresh_token");
52 expires_in = rpcObject.getString("expires_in");
53 savedAccessTokenExpiry = date + (Long.parseLong(expires_in)*1000);
54 savedRefreshTokenExpiry = date + Long.parseLong("86400000");
55 method.releaseConnection();
56 PrintWriter outWrite = new PrintWriter(new BufferedWriter(new FileWriter(application.getRealPath("/OauthStorage.jsp"))), false);
57 String toSave = "\u003C\u0025\nString savedAccessToken = \"" + accessToken + "\";\nLong savedAccessTokenExpiry = Long.parseLong(\"" + savedAccessTokenExpiry + "\");\nString savedRefreshToken = \"" + refreshToken + "\";\nLong savedRefreshTokenExpiry = Long.parseLong(\"" + savedRefreshTokenExpiry + "\");\n\u0025\u003E";
58 outWrite.write(toSave);
59 outWrite.close();
60 }
61
62%>