Click here to Skip to main content
15,906,463 members
Please Sign up or sign in to vote.
1.00/5 (1 vote)
See more:
I am using google-drive-sdk to upload a pdf file (dynamically generated in the php web app) to Gdrive.

About my app

On click of submit button the users are redirected to a THANKYOU page. At the background

pdf file gets generated
and this file will be uploaded to Gdrive account --(configured the client id & secret key for the app in Google Console) :
I am able to upload to the configured GDrive but first time to authenticate I run the url(redirect url given in Google Console) in browser say

http://localhost:3422/wordpress/wp-content/plugins/mktProc/google-api-php-client/gDrive_access/pdf_results_upload.php

This takes me to GDrve Request For Permission page and prompts Allow\Deny Access and works perfectly in local development environment

My Problem
But for moving the code to Staging server, in Google Developer Console I change the origin & return uri to Staging uri like the below.

http://hyperAd.com/wp-content/plugins/mktProc/google-api-php-client/gDrive_access/pdf_results_upload.php

After this when I execute the app, it does not go to the Google Request for Permission page to prompt Allow\Deny. So no access token is received to proceed insert file to GDrive.

What is that I am missing here or what mistake have I done here?


My current code

PHP
if(!session_id()){session_start();}

require_once realpath(dirname(__FILE__) . '/../autoload.php');



$credentialsPath = realpath(dirname(__FILE__) . '/../../../../../');

$pdf_filename='';
try
{
  if(isset($_SESSION['pdf_filename']) && $_SESSION['pdf_filename']) 
      $pdf_filename=$_SESSION['pdf_filename']; 
}
 catch(Exception $ex)
 {
      echo ("This is for GDrive Upload from MiniROI");
 }
$pfdStoragePath=dirname(__FILE__)."/../../vendor/pdf/".$pdf_filename;
/************************************************
  ATTENTION: Fill in these values! Make sure
  the redirect URI is to this page, e.g:
  http://localhost:8080/fileupload.php
 ************************************************/

$client_id = '374094698471-5.apps.googleusercontent.com';
$client_secret = 'd374094698471y';
$redirect_uri = 'http://localhost:3422/wordpress/wp-content/plugins/miniROIMarketo/google-api-php-client/gDrive_access/roi_results_upload.php';



$client = new Google_Client();
$client->setClientId($client_id);
$client->setClientSecret($client_secret);
$client->setRedirectUri($redirect_uri);
$client->addScope("https://www.googleapis.com/auth/drive");
$client->setAccessType("offline");
//$client->setApprovalPrompt('force'); 
$service = new Google_Service_Drive($client);

if (isset($_REQUEST['logout'])) {
  unset($_SESSION['upload_token']);
}
$accessToken="";
 //log
 $plugin_dir ='../../vendor/pdf/log.txt';

 $accessFilePath=$credentialsPath.'\miniROIAccessToken.json';

if (file_exists($accessFilePath)) {
    $accessToken = json_decode(file_get_contents($accessFilePath), true);
    
  } 
  elseif (isset($_GET['code'])) {
  $client->authenticate($_GET['code']);
  
  $accessToken  = $client->getAccessToken();
  
  file_put_contents($credentialsPath.'\miniROIAccessToken.json', json_encode($accessToken));
                                                	
  $redirect = 'http://' . $_SERVER['HTTP_HOST'] . $_SERVER['PHP_SELF'];
  header('Location: ' . filter_var($redirect, FILTER_SANITIZE_URL));
}

if ($accessToken) {
  $client->setAccessToken($accessToken);
  if ($client->isAccessTokenExpired()) {
    unset($accessToken);
  }
} else {
  $authUrl = $client->createAuthUrl();
}

/************************************************
  If we're signed in then lets try to upload our
  file. 
 ************************************************/
try {
  
if ($client->getAccessToken()) {
        
  if($pdf_filename!=="")
  {
        
  $file = new Google_Service_Drive_DriveFile();
  $file->setTitle($pdf_filename);
  $file->setDescription('Document');
  $file->setMimeType('application/pdf');
  $result = $service->files->insert(
      $file,
      array(
        'data' => file_get_contents($pfdStoragePath),
        'mimeType' => 'application/pdf',
        'uploadType' => 'multipart'
      )
  );
 
  $pdf_filename="";
  unset($_SESSION['pdf_filename']);
  }
  
  
}
} catch (Exception $ex) {
    echo "Unexpected issue encountered. Please Try again later.";
}



?>
<div class="box">
  <div class="request">
    
      <a class="login" href="%3C?php%20echo%20$authUrl;%20?%3E">Connect Me!</a>
       
    
  </div>

  
    <div class="shortened">
         
      webContentLink; ?>
     
        
    </div>
  
    
    
    
</div>


What I have tried:

I have tried changing http to https
it doesn't allow

Is the return url at staging correct?
The return url in my dev Environment is correct and its working perfectly
Posted
Updated 29-Sep-16 22:17pm

This content, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)



CodeProject, 20 Bay Street, 11th Floor Toronto, Ontario, Canada M5J 2N8 +1 (416) 849-8900