Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package FortniteApi;
- import java.io.IOException;
- import java.net.MalformedURLException;
- import java.net.URL;
- import java.text.SimpleDateFormat;
- import java.util.Date;
- import org.json.simple.JSONObject;
- import org.json.simple.parser.JSONParser;
- import org.json.simple.parser.ParseException;
- import okhttp3.OkHttpClient;
- import okhttp3.Request;
- import okhttp3.Request.Builder;
- import okhttp3.RequestBody;
- import okhttp3.Response;
- public class FortniteAPI {
- private static final String clientLauncherToken = "MzQ0NmNkNzI2OTRjNGE0NDg1ZDgxYjc3YWRiYjIxNDE6OTIwOWQ0YTVlMjVhNDU3ZmI5YjA3NDg5ZDMxM2I0MWE";
- private static final String clientExchangeToken = "ZWM2ODRiOGM2ODdmNDc5ZmFkZWEzY2IyYWQ4M2Y1YzY6ZTFmMzFjMjExZjI4NDEzMTg2MjYyZDM3YTEzZmM4NGQ";
- public String accountID = null;
- private String accessToken;
- private String accessCode;
- private String exchangeToken;
- private String email;
- private String password;
- private Date tokenExpire;
- private boolean loggedIn = false;
- public OkHttpClient httpClient = new OkHttpClient();
- public boolean loggedIn() {
- return loggedIn;
- }
- public static final String timeStampFormat = "yyyy-MM-dd'T'HH:mm:ss.SSS'Z'";
- public boolean login(String username, String password)
- throws IOException, ParseException, java.text.ParseException {
- this.email = username;
- this.password = password;
- getAccessToken(username, password);
- getAccessCode();
- getExchangeToken();
- if (accessToken != null && accessCode != null && exchangeToken != null) {
- this.loggedIn = true;
- return true;
- } else {
- return false;
- }
- }
- public void refresh() throws IOException, ParseException, java.text.ParseException {
- if (isTokenExpired()) {
- getAccessToken(email, password);
- getAccessCode();
- getExchangeToken();
- System.out.println("[Fortnite Api] Refreshed OAuth Token");
- }
- }
- public boolean isTokenExpired() {
- long currentTime = System.currentTimeMillis();
- // Refresh the token 60 seconds before it expires to be safe
- if ((currentTime - 60000) >= this.tokenExpire.getTime()) {
- return true;
- } else {
- return false;
- }
- }
- public String getEndpoint(String url) throws IOException {
- try {
- refresh();
- } catch (java.text.ParseException e) {
- // TODO Auto-generated catch block
- e.printStackTrace();
- } catch (ParseException e) {
- // TODO Auto-generated catch block
- e.printStackTrace();
- }
- Builder b = new Builder();
- b.url(url);
- b.addHeader("X-EpicGames-Language", "en");
- b.addHeader("Authorization", "bearer " + exchangeToken);
- Request r = b.build();
- Response response = httpClient.newCall(r).execute();
- String res = response.body().string();
- response.close();
- return res;
- }
- public String getEndpointPOST(String url, String encoding, String postArgs) throws IOException {
- try {
- refresh();
- } catch (java.text.ParseException e) {
- // TODO Auto-generated catch block
- e.printStackTrace();
- } catch (ParseException e) {
- // TODO Auto-generated catch block
- e.printStackTrace();
- }
- Builder b = new Builder();
- b.url(url);
- b.addHeader("X-EpicGames-Language", "en");
- b.addHeader("Authorization", "bearer " + exchangeToken);
- b.method("POST", RequestBody.create(okhttp3.MediaType.parse(encoding), postArgs));
- Request r = b.build();
- Response response = httpClient.newCall(r).execute();
- String res = response.body().string();
- response.close();
- return res;
- }
- public String getLocker() throws IOException, ParseException, java.text.ParseException {
- String requestURL = "https://fortnite-public-service-prod11.ol.epicgames.com/fortnite/api/game/v2/profile/"
- + accountID + "/client/QueryProfile?profileId=athena&rvn=-1";
- return this.getEndpointPOST(requestURL, "application/json", "{}");
- }
- public String lookupAccountName(String name) throws ParseException, IOException, java.text.ParseException {
- String res = this.getEndpoint(
- "https://persona-public-service-prod06.ol.epicgames.com/persona/api/public/account/lookup?q=" + name);
- JSONParser jsonParser = new JSONParser();
- Object data = jsonParser.parse(res);
- if (data instanceof JSONObject) {
- JSONObject json = (JSONObject) data;
- String requestedAccountID = (String) json.get("id");
- return requestedAccountID;
- } else {
- throw new ParseException(0);
- }
- }
- private String getAccessToken(String username, String password)
- throws IOException, ParseException, java.text.ParseException {
- Builder b = new Builder();
- b.url(new URL(Endpoints.clientLauncherTokenURL));
- b.method("POST", RequestBody.create(okhttp3.MediaType.parse("application/x-www-form-urlencoded"),
- "grant_type=password&username=" + username + "&password=" + password));
- b.addHeader("grant_type", "password");
- b.addHeader("username", username);
- b.addHeader("password", password);
- b.addHeader("includePerms", "true");
- b.addHeader("Authorization", "basic " + clientLauncherToken);
- b.addHeader("Content-Type", "application/x-www-form-urlencoded");
- b.addHeader("Content-Length", "0");
- Request r = b.build();
- Response response = httpClient.newCall(r).execute();
- JSONParser jsonParser = new JSONParser();
- Object data = jsonParser.parse(response.body().string());
- if (data instanceof JSONObject) {
- JSONObject jsonData = (JSONObject) data;
- String token = (String) jsonData.get("access_token");
- this.accessToken = token;
- return token;
- } else {
- throw new ParseException(0);
- }
- }
- private String getAccessCode() throws IOException, ParseException {
- Builder b = new Builder();
- b.url(new URL(Endpoints.clientLauncherAccessCode));
- b.addHeader("Authorization", "bearer " + accessToken);
- Request r = b.build();
- Response response = httpClient.newCall(r).execute();
- JSONParser jsonParser = new JSONParser();
- Object data = jsonParser.parse(response.body().string());
- if (data instanceof JSONObject) {
- JSONObject jsonData = (JSONObject) data;
- String accessCode = (String) jsonData.get("code");
- this.accessCode = accessCode;
- return accessCode;
- } else {
- throw new ParseException(0);
- }
- }
- private String getExchangeToken() throws IOException, ParseException {
- Builder b = new Builder();
- b.url(new URL(Endpoints.clientExchangeToken));
- b.addHeader("Authorization", "basic " + clientExchangeToken);
- b.addHeader("Content-Type", "application/x-www-form-urlencoded");
- b.addHeader("grant_type", "exchange_code");
- b.addHeader("exchange_code", this.accessCode);
- b.addHeader("includePerms", "true");
- b.addHeader("token_type", "eg1");
- b.method("POST", RequestBody.create(okhttp3.MediaType.parse("application/x-www-form-urlencoded"),
- "grant_type=exchange_code&exchange_code=" + this.accessCode));
- Request r = b.build();
- Response response = httpClient.newCall(r).execute();
- JSONParser jsonParser = new JSONParser();
- Object data = jsonParser.parse(response.body().string());
- if (data instanceof JSONObject) {
- JSONObject jsonData = (JSONObject) data;
- String exToken = (String) jsonData.get("access_token");
- this.accountID = (String) jsonData.get("account_id");
- String expiresAt = (String) jsonData.get("expires_at");
- SimpleDateFormat dateFormat = new SimpleDateFormat(this.timeStampFormat);
- try {
- this.tokenExpire = dateFormat.parse(expiresAt);
- } catch (java.text.ParseException e) {
- // TODO Auto-generated catch block
- e.printStackTrace();
- }
- this.exchangeToken = exToken;
- return exToken;
- } else {
- throw new ParseException(0);
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement