2015-04-22 18 views
5

Uso OAuth nella mia applicazione e voglio disconnettere l'utente quando il token di accesso è scaduto.Google OAuth2 - isAccessTokenExpired() sempre vero

Ma quando ho controllato la scadenza token con

$client->isAccessTokenExpired() 

Si restituisce sempre 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

Se è necessario aggiornare il token, è possibile ottenere un token di aggiornamento, quindi salvarlo in bd, file, ecc. E utilizzarlo. – mcklayin

risposta

8

Probabilmente controllando la scadenza prima di eseguire $client->setAccessToken();. Vediamo il codice in cui stai controllando la scadenza.

+1

In realtà quando eseguo $ client-> isAccessTokenExpired() subito dopo $ client-> setAccessToken(); Restituisce "falso". Grazie! – Kroll

+0

Prego. Per favore considera di impostare la mia risposta come accettata. – Orange

+0

Non l'ho notato affatto ... – Abdul

0

Non sempre vero. Ho fatto esattamente gli ordini giusti e 1/isAccessTokenExpired() è sempre TRUE 2/ricevo access_token, refresh_token, expires_in, ma non ricevo mai creato. Questo creato viene utilizzato in isAccessTokenExpired()

Problemi correlati