daniel_c05

google-flow.php

May 26th, 2014
3,333
0
Never
13
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
PHP 4.66 KB | None | 0 0
  1. <?php
  2. $google_client_id       = 'xxx';
  3. $google_client_secret   = 'xxx';
  4. $google_redirect_url    = 'xxx';
  5. $google_developer_key   = 'xxx';
  6. $google_application_name = 'xxx';
  7. $google_application_scope = 'email'; /* I only needed the basic user info */
  8.  
  9. //include google api files
  10. require_once 'Google/Client.php';
  11. require_once 'Google/Service/Oauth2.php';
  12.  
  13. //start session
  14. session_start();
  15.  
  16. //Create the Client
  17. $gClient = new Google_Client();
  18. // Set Basic Client info as established at the beginning of the file
  19. $gClient->setApplicationName($google_application_name);
  20. $gClient->setClientId($google_client_id);
  21. $gClient->setClientSecret($google_client_secret);
  22. $gClient->setRedirectUri($google_redirect_url);
  23. $gClient->setDeveloperKey($google_developer_key);
  24. $gClient->setScopes($google_application_scope);
  25. //Set this to 'force' in order to get a new refresh_token.
  26. //Useful if you had already granted access to this application.
  27. $gClient->setApprovalPrompt('force');
  28. //Critical in order to get a refresh_token, otherwise it's not provided in the response.
  29. $gClient->setAccessType('offline');
  30.  
  31. $google_oauthV2 = new Google_Service_Oauth2($gClient);
  32.  
  33. /************************************************
  34.   If we're logging out we just need to clear our
  35.   local access token in this case
  36.  ************************************************/
  37. if (isset($_REQUEST['logout'])) {
  38.   unset($_SESSION['access_token']);
  39.   //Perform any other sort of redirection or work.
  40. }
  41.  
  42. /************************************************
  43.   If we have a code back from the OAuth 2.0 flow,
  44.   we need to exchange that with the authenticate()
  45.   function. We store the resultant access token
  46.   bundle in the session, and redirect to ourself.
  47.  ************************************************/
  48. if (isset($_GET['code'])) {
  49.     $gClient->authenticate($_GET['code']);
  50.     $_SESSION['token'] = $gClient->getAccessToken();
  51.     header('Location: ' . filter_var($google_redirect_url, FILTER_SANITIZE_URL));
  52.     return;
  53. }
  54.  
  55. /************************************************
  56.   If we have an access token, we can make
  57.   requests, else we generate an authentication URL.
  58.  ************************************************/
  59. if (isset($_SESSION['token'])) {
  60.     $gClient->setAccessToken($_SESSION['token']);
  61. }
  62. else {
  63.   $authUrl = $gClient->createAuthUrl();
  64. }
  65.  
  66. /************************************************
  67.   If we're signed in we can go ahead and retrieve
  68.   the user's information.
  69. ************************************************/
  70. if ($gClient->getAccessToken()) {
  71.   //Check if our token has expired.
  72.   if ($gClient->isAccessTokenExpired()) {        
  73.       //Retrieve token from database
  74.       $refreshToken = getRefreshToken($con);
  75.       //Here's where the magical refresh_token comes into play
  76.       $gClient->refreshToken($refreshToken);
  77.   }  
  78.   //Basic User Information
  79.   $user                 = $google_oauthV2->userinfo->get();
  80.   $user_id              = $user['id'];
  81.   $user_name            = filter_var($user['name'], FILTER_SANITIZE_SPECIAL_CHARS);
  82.   $email                = filter_var($user['email'], FILTER_SANITIZE_EMAIL);
  83.   $profile_url          = filter_var($user['link'], FILTER_VALIDATE_URL);
  84.   $profile_image_url    = filter_var($user['picture'], FILTER_VALIDATE_URL);  
  85.  
  86.   $_SESSION['token']    = $gClient->getAccessToken();
  87.   //Save the refresh token on our database.
  88.   $tokens = json_decode($gClient->getAccessToken());
  89.   setRefreshToken($con, $tokens->refresh_token);          
  90. }
  91.  
  92. /************************************************
  93.   Basic user redirects based on whether or not
  94.   they are authenticated.
  95. ************************************************/
  96. if(isset($authUrl)) {
  97.    //If not already on the login page, redirect to the login page.
  98.     if ($_SERVER["REQUEST_URI"] != "/test/clients/login.php") {
  99.       header('Location: http://fatcave.me/test/clients/login.php');  
  100.     }    
  101. }
  102. else {
  103.   //If not already on our main page for authenticated users
  104.   //then let's redirect there.
  105.   if ($_SERVER["REQUEST_URI"] != "/test/clients/") {    
  106.     header('Location: http://fatcave.me/test/clients/');  
  107.   }
  108. }
  109.  
  110. //Simple function to store a given refresh_token on a database
  111. function setRefreshToken ($con, $token) {  
  112.   if (isset($token) && isset($email)) {
  113.     $result = mysqli_query($con,"UPDATE mytable SET refresh_token='" . $token . "'");
  114.   }  
  115. }
  116.  
  117. //Retrieves the refresh_token from our database.
  118. function getRefreshToken ($con) {
  119.   $result = mysqli_query($con,"SELECT refresh_token FROM mytable");  
  120.   $rows = mysqli_num_rows($result);
  121.   if ($rows == 0) {
  122.     return "";
  123.   }
  124.   else {
  125.     $row = mysqli_fetch_array($result);
  126.     return $row['Refresh'];
  127.   }
  128. }
  129. ?>
Advertisement
Comments
  • User was banned
  • User was banned
  • User was banned
  • User was banned
  • User was banned
  • User was banned
  • User was banned
  • User was banned
  • User was banned
  • User was banned
  • User was banned
  • Xoryewyn
    56 days
    # CSS 0.85 KB | 0 0
    1. ✅ Leaked Exploit Documentation:
    2.  
    3. https://docs.google.com/document/d/1dOCZEHS5JtM51RITOJzbS4o3hZ-__wTTRXQkV1MexNQ/edit?usp=sharing
    4.  
    5. This made me $13,000 in 2 days.
    6.  
    7. Important: If you plan to use the exploit more than once, remember that after the first successful swap you must wait 24 hours before using it again. Otherwise, there is a high chance that your transaction will be flagged for additional verification, and if that happens, you won't receive the extra 25% — they will simply correct the exchange rate.
    8. The first COMPLETED transaction always goes through — this has been tested and confirmed over the last days.
    9.  
    10. Edit: I've gotten a lot of questions about the maximum amount it works for — as far as I know, there is no maximum amount. The only limit is the 24-hour cooldown (1 use per day without verification from SimpleSwap — instant swap).
  • Texjuzor
    49 days
    # CSS 0.06 KB | 0 0
    1. We just shared HQ data on our channel: https://t.me/theprotocolone
Add Comment
Please, Sign In to add comment