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
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;
$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");
$service = new Google_Service_Drive($client);
if (isset($_REQUEST['logout'])) {
unset($_SESSION['upload_token']);
}
$accessToken="";
$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();
}
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