2015-04-22 16 views
5

Używam OAuth w mojej aplikacji i chcę wylogować użytkownika, gdy token dostępu wygasł.Google OAuth2 - isAccessTokenExpired() zawsze jest prawdziwe

Ale kiedy sprawdziłem tokenu wygasania z

$client->isAccessTokenExpired() 

on zawsze zwraca 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

Jeśli potrzebujesz odświeżyć token, możesz uzyskać token odświeżania, a następnie zapisać go w pliku bd, pliku itp. I używać go. – mcklayin

Odpowiedz

8

Prawdopodobnie sprawdzania wygasania przed uruchomieniem $client->setAccessToken();. Zobaczmy kod, w którym sprawdzasz wygasanie.

+1

Właściwie po uruchomieniu $ client-> isAccessTokenExpired() zaraz po $ client-> setAccessToken(); Zwraca "false". Dziękuję Ci! – Kroll

+0

Nie ma za co. Proszę rozważyć ustawienie mojej odpowiedzi jako zaakceptowanej. – Orange

+0

Nie zauważyłem, że w ogóle ... – Abdul

0

Nie zawsze prawda. Zrobiłem dokładnie we właściwych zamówieniach i 1/isAccessTokenExpired() jest zawsze PRAWDA 2/Otrzymuję access_token, refresh_token, expires_in, ale nigdy nie otrzymam utworzonego. To stworzone jest używane w isAccessTokenExpired()

Powiązane problemy