Токен обновления Google OAuth2 с использованием переполнения стека

Я пытаюсь создать и сохранить маркер доступа, на который я могу ссылаться, когда другие пользователи в моей организации (у которых нет доступа к API) входят в систему. Например, мне нужно вызвать API администратора Google, чтобы получить их orgUnit. Когда я получаю свой access_token, я могу использовать его с другими пользователями, но срок его действия истекает через час, и я должен повторно войти в систему со своей учетной записью, чтобы получить новый токен.

Короче говоря, я не уверен, где или как создать токен обновления, чтобы я мог сохранить его в своей базе данных.

//Create Client Request to access Google API
$client = new Google_Client();
$client->setApplicationName(APPLICATION_NAME);
$client->setClientId(CLIENT_ID);
$client->setClientSecret(CLIENT_SECRET);
$client->setRedirectUri(REDIRECT_URL);
$client->setDeveloperKey(API_KEY);
$client->setAccessType('offline');

$client->addScope("https://www.googleapis.com/auth/userinfo.email");
$client->addScope("https://www.googleapis.com/auth/admin.directory.user.readonly");

//Send Client Request
if($client->isAccessTokenExpired()){
//not doing anything here at the moment
}

$objOAuthService = new Google_Service_Oauth2($client);

//Logout
if (isset($_REQUEST['logout'])) {
unset($_SESSION['access_token']);
unset($_SESSION['code']);
$client->revokeToken();
header('Location: ' . filter_var(REDIRECT_URL, FILTER_SANITIZE_URL)); //redirect user back to page
}else if (isset($_GET['code'])) {
//Authenticate code from Google OAuth Flow
//Add Access Token to Session
$client->authenticate($_GET['code']);
$_SESSION['code'] = $_GET['code'];
$_SESSION['access_token'] = $client->getAccessToken();
header('Location: ' . filter_var(REDIRECT_URL, FILTER_SANITIZE_URL));
}

//Set Access Token to make Request
if (isset($_SESSION['access_token'])) {
$client->setAccessToken($_SESSION['access_token']);
}

1

Решение

Задача ещё не решена.

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]