2015-04-22 7 views
5

Ich verwende OAuth in meiner Anwendung und ich möchte den Benutzer abmelden, wenn das Zugriffstoken abgelaufen ist.Google OAuth2 - isAccessTokenExpired() immer true

Aber wenn ich den Token Ablauf mit

geprüft
$client->isAccessTokenExpired() 

Es ist immer 1.

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


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)); 
} 



if (!isset($_SESSION['token'])) { 
    $authUrl = $client->createAuthUrl(); 
} 


if (isset($_SESSION['token'])) { 
    $client->setAccessToken($_SESSION['token']); 
    $service = new Google_Service_Calendar($client); 

    $oauth2 = new Google_Service_Oauth2($client); 
    $userinfo = $oauth2->userinfo->get(); 
    $emailUser = $userinfo->getEmail(); 
    $_SESSION['emailUser'] = $userinfo->getEmail(); 
} 
+0

Wenn Sie Token aktualisieren müssen, können Sie aktualisieren Token, dann speichern Sie es in BD, Datei usw. und ihn verwenden. – mcklayin

Antwort

8

Sie wahrscheinlich zurückkehrt die Ablaufprüfung vor $client->setAccessToken(); läuft. Lassen Sie uns den Code sehen, in dem Sie den Ablauf überprüfen.

+1

Eigentlich wenn ich $ client-> isAccessTokenExpired() nur nach $ client-> setAccessToken() ausführen; Es gibt "falsch" zurück. Vielen Dank! – Kroll

+0

Gern geschehen. Bitte überlege, meine Antwort als akzeptiert zu betrachten. – Orange

+0

Hat das überhaupt nicht bemerkt ... – Abdul

0

Nicht immer wahr. Ich habe genau in den richtigen Bestellungen und 1/isAccessTokenExpired() ist immer wahr 2/Ich erhalte access_token, refresh_token, expires_in, aber ich erhalte nie erstellt. Diese erstellt wird in verwendet isAccessTokenExpired()

Verwandte Themen