1

I am using the following code which was largely lifted from this tutorial - http://www.daimto.com/google-oauth2-php/

I have added the line client->setAccessType("offline"); in order to receive a refresh token from Google which I can see coming through from print "Access from google: " . $_SESSION['token'];.

I'm struggling to understand how to use the refresh token in order to get authorisation. What I'd ideally like to is update this script to - use a refresh token if one is available, or - present the existing "Connect Me" link if one is not

I plan to store the refresh token in a DB eventually, however to get it working initially I will just hard code.

Any help is much appreciated!

<?php        
set_include_path('src');
require_once 'Google/Client.php';     
require_once 'Google/Service/Calendar.php';

session_start();      
$client = new Google_Client();
    $client->setApplicationName("Client_Library_Examples");
    $client->setDeveloperKey("XXXXXXXXXXXXXXXXXXXX");  
    $client->setClientId('XXXXXXXXXXXXXXXXXXXX');
    $client->setClientSecret('XXXXXXXXXXXXXXXXXXXX');
    $client->setRedirectUri('XXXXXXXXXXXXXXXXXXXX');
    $client->setAccessType("offline");
    $client->setScopes(array('https://www.googleapis.com/auth/calendar'));

    //For loging out.
    if ($_GET['logout'] == "1") {
    unset($_SESSION['token']);
       }   

    // Step 2: The user accepted your access now you need to exchange it.
    if (isset($_GET['code'])) {
        $client->authenticate($_GET['code']);  
        $_SESSION['token'] = $client->getAccessToken();
        $redirect = 'http://' . $_SERVER['HTTP_HOST'] . $_SERVER['PHP_SELF'];
        header('Location: ' . filter_var($redirect, FILTER_SANITIZE_URL));
    }

    // Step 1:  The user has not authenticated we give them a link to login    
    if (!$client->getAccessToken() && !isset($_SESSION['token'])) {
        $authUrl = $client->createAuthUrl();
        print "<a class='login' href='$authUrl'>Connect Me!</a>";
        }        

    // Step 3: We have access we can now create our service
    if (isset($_SESSION['token'])) {
        print "<a class='logout' href='".$_SERVER['PHP_SELF']."?logout=1'>LogOut</a><br>";
        $client->setAccessToken($_SESSION['token']);   
        $service = new Google_Service_Calendar($client); 
    }
 print "<br>";

 print "Access from google: " . $_SESSION['token']; 
 print "<br><br>";
 require_once 'calendar_app.php';

?>
  • This might help but I haven't had time to test it myself http://stackoverflow.com/questions/9241213/how-to-refresh-token-with-google-api-client – Linda Lawton - DaImTo Oct 23 '14 at 09:10
  • 1
    Great thanks, missed that in my searches. I looked at a few of the responses, I actually found that the answer posted by answered by Strik3r on Feb 26 '13 at 5:30 to be the simplest and worked well. – Dominic Vermeulen-Smith Oct 23 '14 at 11:24

0 Answers0