Ich habe diesen Code, der funktioniert, wenn ich mich das erste Mal anmelde, aber wenn die Seite offen gelassen wird und ich mich nicht aus dieser Sitzung abmelde, erhalte ich die folgende Meldung und ich muss meinen Browser neu starten um meine Seite wieder zu bekommen. Wie kann ich das Token automatisch aktualisieren lassen?Google OAuth Token läuft ab
Fatal error: Uncaught exception 'Google_Auth_Exception' with message 'The OAuth 2.0 access token has expired, and a refresh token is not available. Refresh tokens are not returned for responses that were auto-approved.'...
Dies ist der Code
<?php
require_once __DIR__.'/gplus-lib/vendor/autoload.php';
const CLIENT_ID = 'CLIENT_ID';
const CLIENT_SECRET = 'CLIENT_SECRET';
const REDIRECT_URI = 'REDIRECT_URI';
session_start();
$client = new Google_Client();
$client->setClientId(CLIENT_ID);
$client->setClientSecret(CLIENT_SECRET);
$client->setRedirectUri(REDIRECT_URI);
$client->setScopes('email');
$plus = new Google_Service_Plus($client);
if (isset($_REQUEST['logout'])) {
session_unset();
}
if (isset($_GET['code'])) {
$client->authenticate($_GET['code']);
$_SESSION['access_token'] = $client->getAccessToken();
$redirect = 'http://' . $_SERVER['HTTP_HOST'] . $_SERVER['PHP_SELF'];
header('Location: ' . filter_var($redirect, FILTER_SANITIZE_URL));
}
if (isset($_SESSION['access_token']) && $_SESSION['access_token']) {
$client->setAccessToken($_SESSION['access_token']);
$me = $plus->people->get('me');
// Get User data
$id = $me['id'];
$name = $me['displayName'];
$email = $me['emails'][0]['value'];
$profile_image_url = $me['image']['url'];
} else {
// get the login url
$authUrl = $client->createAuthUrl();
}
?>
<div>
if (isset($authUrl)) {
echo "<a class='login' href='" . $authUrl . "'><img src='gplus-lib/signin_button.png' height='50px'/></a>";
} else { ?>
<!-- Some HTML -->
<?php
}
?>
</div>