Nicht in der Lage zu aktualisieren, OAuth2-token in PHP, ungültige gewähren

Ich brauche, um ein PHP-Skript erstellt eine sigle Ereignis in Google Kalender.
Ich hatte keine Probleme beim einrichten von client id, client secret, dev Schlüssel und erstellen ein neues Ereignis.

Mein problem ist nur mit OAuth2, insbesondere ich brauche, um eine dauerhafte Verbindung und ich Tue nicht wollen zu tun, die Authentifizierung jedes mal wenn ich das Skript ausführen.

Eigentlich mit diesem script bin ich in der Lage zu bekommen ein token und refresh token, aber jede Stunde mein token abgelaufen ist und ich weiß nicht, wie um Sie zu aktualisieren. Wie kann ich diesen code Bearbeiten, das zu tun?
Kann ich sowohl die token und refresh token irgendwo und verwenden Sie immer die gleichen Daten?

Ich erhalten eine nicht abgefangene Ausnahme 'Google_AuthException' with message 'Fehler beim aktualisieren der OAuth2-token, message: '{ "error" : "invalid_grant"

Ich habe schon gelesen das einige andere posts zu diesem Thema hier im stackoverflow-aber ich habe noch keine Lösung gefunden... :\

<?php

 require_once 'src/Google_Client.php';
 require_once 'src/contrib/Google_CalendarService.php';
 session_start();

 $client = new Google_Client();
 $client->setApplicationName("Calendar App");
 $client->setClientId('xxxx');
 $client->setClientSecret('yyy');
 $client->setRedirectUri('http://www.zzzzzz');  
 $client->setDeveloperKey('kkk');
 $client->setAccessType('offline');
 $cal = new Google_CalendarService($client);    

if (isset($_GET['logout'])) {
  unset($_SESSION['token']);
}

if (isset($_GET['code'])) {
  $client->authenticate($_GET['code']);
  $_SESSION['token'] = $client->getAccessToken();
  header('Location: http://' . $_SERVER['HTTP_HOST'] . $_SERVER['PHP_SELF']); 
}

if (isset($_SESSION['token'])) {
    //echo $_SESSION['token'];
  //$client->setAccessToken($_SESSION['token']);
    $authObj = json_decode($_SESSION['token']);
    $accessToken = $authObj->access_token;
    $refreshToken = $authObj->refresh_token;
    $tokenType = $authObj->token_type;
    $expiresIn = $authObj->expires_in;
    echo 'access_token = ' . $accessToken;
    echo '<br />';
    echo 'refresh_token = ' . $refreshToken;
    echo '<br />';
    echo 'token_type = ' . $tokenType;
    echo '<br />';
    echo 'expires_in = ' . $expiresIn;
}

if(!empty($cookie)){
    $client->refreshToken($this->Cookie->read('token'));
}

if ($client->getAccessToken()) {
    $calList = $cal->calendarList->listCalendarList();
    $_SESSION['token'] = $client->getAccessToken();
} else {
  $authUrl = $client->createAuthUrl();
  print "<a class='login' href='$authUrl'>Connect Me!</a>";
}


//Creation of a single event
$event = new Google_Event();
$event->setSummary($event_name);            
$event->setLocation('');                    
....

?>

Vielen Dank für Ihre Unterstützung!

InformationsquelleAutor Roberto Milani | 2013-11-07

Schreibe einen Kommentar