Advertisement
FunGamesLeaks

Untitled

Jun 15th, 2019
681
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 7.50 KB | None | 0 0
  1. package FortniteApi;
  2.  
  3. import java.io.IOException;
  4. import java.net.MalformedURLException;
  5. import java.net.URL;
  6. import java.text.SimpleDateFormat;
  7. import java.util.Date;
  8.  
  9. import org.json.simple.JSONObject;
  10. import org.json.simple.parser.JSONParser;
  11. import org.json.simple.parser.ParseException;
  12.  
  13. import okhttp3.OkHttpClient;
  14. import okhttp3.Request;
  15. import okhttp3.Request.Builder;
  16. import okhttp3.RequestBody;
  17. import okhttp3.Response;
  18.  
  19. public class FortniteAPI {
  20.     private static final String clientLauncherToken = "MzQ0NmNkNzI2OTRjNGE0NDg1ZDgxYjc3YWRiYjIxNDE6OTIwOWQ0YTVlMjVhNDU3ZmI5YjA3NDg5ZDMxM2I0MWE";
  21.     private static final String clientExchangeToken = "ZWM2ODRiOGM2ODdmNDc5ZmFkZWEzY2IyYWQ4M2Y1YzY6ZTFmMzFjMjExZjI4NDEzMTg2MjYyZDM3YTEzZmM4NGQ";
  22.     public String accountID = null;
  23.     private String accessToken;
  24.     private String accessCode;
  25.     private String exchangeToken;
  26.  
  27.     private String email;
  28.     private String password;
  29.     private Date tokenExpire;
  30.     private boolean loggedIn = false;
  31.    
  32.     public OkHttpClient httpClient = new OkHttpClient();
  33.  
  34.     public boolean loggedIn() {
  35.         return loggedIn;
  36.     }
  37.  
  38.     public static final String timeStampFormat = "yyyy-MM-dd'T'HH:mm:ss.SSS'Z'";
  39.  
  40.     public boolean login(String username, String password)
  41.             throws IOException, ParseException, java.text.ParseException {
  42.         this.email = username;
  43.         this.password = password;
  44.         getAccessToken(username, password);
  45.         getAccessCode();
  46.         getExchangeToken();
  47.         if (accessToken != null && accessCode != null && exchangeToken != null) {
  48.             this.loggedIn = true;
  49.             return true;
  50.         } else {
  51.             return false;
  52.         }
  53.  
  54.     }
  55.  
  56.     public void refresh() throws IOException, ParseException, java.text.ParseException {
  57.         if (isTokenExpired()) {
  58.             getAccessToken(email, password);
  59.             getAccessCode();
  60.             getExchangeToken();
  61.             System.out.println("[Fortnite Api] Refreshed OAuth Token");
  62.         }
  63.     }
  64.  
  65.     public boolean isTokenExpired() {
  66.         long currentTime = System.currentTimeMillis();
  67.         // Refresh the token 60 seconds before it expires to be safe
  68.         if ((currentTime - 60000) >= this.tokenExpire.getTime()) {
  69.             return true;
  70.         } else {
  71.             return false;
  72.         }
  73.     }
  74.  
  75.     public String getEndpoint(String url) throws IOException {
  76.         try {
  77.             refresh();
  78.         } catch (java.text.ParseException e) {
  79.             // TODO Auto-generated catch block
  80.             e.printStackTrace();
  81.         } catch (ParseException e) {
  82.             // TODO Auto-generated catch block
  83.             e.printStackTrace();
  84.         }
  85.  
  86.         Builder b = new Builder();
  87.         b.url(url);
  88.         b.addHeader("X-EpicGames-Language", "en");
  89.         b.addHeader("Authorization", "bearer " + exchangeToken);
  90.         Request r = b.build();
  91.         Response response = httpClient.newCall(r).execute();
  92.         String res = response.body().string();
  93.         response.close();
  94.         return res;
  95.  
  96.     }
  97.  
  98.     public String getEndpointPOST(String url, String encoding, String postArgs) throws IOException {
  99.         try {
  100.             refresh();
  101.         } catch (java.text.ParseException e) {
  102.             // TODO Auto-generated catch block
  103.             e.printStackTrace();
  104.         } catch (ParseException e) {
  105.             // TODO Auto-generated catch block
  106.             e.printStackTrace();
  107.         }
  108.  
  109.         Builder b = new Builder();
  110.         b.url(url);
  111.         b.addHeader("X-EpicGames-Language", "en");
  112.         b.addHeader("Authorization", "bearer " + exchangeToken);
  113.         b.method("POST", RequestBody.create(okhttp3.MediaType.parse(encoding), postArgs));
  114.         Request r = b.build();
  115.         Response response = httpClient.newCall(r).execute();
  116.         String res = response.body().string();
  117.         response.close();
  118.         return res;
  119.  
  120.     }
  121.  
  122.     public String getLocker() throws IOException, ParseException, java.text.ParseException {
  123.         String requestURL = "https://fortnite-public-service-prod11.ol.epicgames.com/fortnite/api/game/v2/profile/"
  124.                 + accountID + "/client/QueryProfile?profileId=athena&rvn=-1";
  125.         return this.getEndpointPOST(requestURL, "application/json", "{}");
  126.     }
  127.  
  128.     public String lookupAccountName(String name) throws ParseException, IOException, java.text.ParseException {
  129.         String res = this.getEndpoint(
  130.                 "https://persona-public-service-prod06.ol.epicgames.com/persona/api/public/account/lookup?q=" + name);
  131.         JSONParser jsonParser = new JSONParser();
  132.         Object data = jsonParser.parse(res);
  133.         if (data instanceof JSONObject) {
  134.             JSONObject json = (JSONObject) data;
  135.             String requestedAccountID = (String) json.get("id");
  136.             return requestedAccountID;
  137.         } else {
  138.             throw new ParseException(0);
  139.         }
  140.     }
  141.  
  142.     private String getAccessToken(String username, String password)
  143.             throws IOException, ParseException, java.text.ParseException {
  144.  
  145.  
  146.         Builder b = new Builder();
  147.         b.url(new URL(Endpoints.clientLauncherTokenURL));
  148.         b.method("POST", RequestBody.create(okhttp3.MediaType.parse("application/x-www-form-urlencoded"),
  149.                 "grant_type=password&username=" + username + "&password=" + password));
  150.         b.addHeader("grant_type", "password");
  151.         b.addHeader("username", username);
  152.         b.addHeader("password", password);
  153.         b.addHeader("includePerms", "true");
  154.         b.addHeader("Authorization", "basic " + clientLauncherToken);
  155.         b.addHeader("Content-Type", "application/x-www-form-urlencoded");
  156.         b.addHeader("Content-Length", "0");
  157.  
  158.         Request r = b.build();
  159.         Response response = httpClient.newCall(r).execute();
  160.         JSONParser jsonParser = new JSONParser();
  161.         Object data = jsonParser.parse(response.body().string());
  162.         if (data instanceof JSONObject) {
  163.             JSONObject jsonData = (JSONObject) data;
  164.             String token = (String) jsonData.get("access_token");
  165.             this.accessToken = token;
  166.             return token;
  167.         } else {
  168.             throw new ParseException(0);
  169.         }
  170.     }
  171.  
  172.     private String getAccessCode() throws IOException, ParseException {
  173.         Builder b = new Builder();
  174.         b.url(new URL(Endpoints.clientLauncherAccessCode));
  175.         b.addHeader("Authorization", "bearer " + accessToken);
  176.         Request r = b.build();
  177.         Response response = httpClient.newCall(r).execute();
  178.         JSONParser jsonParser = new JSONParser();
  179.         Object data = jsonParser.parse(response.body().string());
  180.         if (data instanceof JSONObject) {
  181.             JSONObject jsonData = (JSONObject) data;
  182.             String accessCode = (String) jsonData.get("code");
  183.             this.accessCode = accessCode;
  184.             return accessCode;
  185.         } else {
  186.             throw new ParseException(0);
  187.         }
  188.  
  189.     }
  190.  
  191.     private String getExchangeToken() throws IOException, ParseException {
  192.         Builder b = new Builder();
  193.         b.url(new URL(Endpoints.clientExchangeToken));
  194.         b.addHeader("Authorization", "basic " + clientExchangeToken);
  195.         b.addHeader("Content-Type", "application/x-www-form-urlencoded");
  196.         b.addHeader("grant_type", "exchange_code");
  197.         b.addHeader("exchange_code", this.accessCode);
  198.         b.addHeader("includePerms", "true");
  199.         b.addHeader("token_type", "eg1");
  200.         b.method("POST", RequestBody.create(okhttp3.MediaType.parse("application/x-www-form-urlencoded"),
  201.                 "grant_type=exchange_code&exchange_code=" + this.accessCode));
  202.         Request r = b.build();
  203.         Response response = httpClient.newCall(r).execute();
  204.         JSONParser jsonParser = new JSONParser();
  205.         Object data = jsonParser.parse(response.body().string());
  206.         if (data instanceof JSONObject) {
  207.             JSONObject jsonData = (JSONObject) data;
  208.             String exToken = (String) jsonData.get("access_token");
  209.             this.accountID = (String) jsonData.get("account_id");
  210.             String expiresAt = (String) jsonData.get("expires_at");
  211.             SimpleDateFormat dateFormat = new SimpleDateFormat(this.timeStampFormat);
  212.             try {
  213.                 this.tokenExpire = dateFormat.parse(expiresAt);
  214.             } catch (java.text.ParseException e) {
  215.                 // TODO Auto-generated catch block
  216.                 e.printStackTrace();
  217.             }
  218.             this.exchangeToken = exToken;
  219.             return exToken;
  220.         } else {
  221.             throw new ParseException(0);
  222.         }
  223.  
  224.     }
  225. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement