Правильно ли сохранять токены OAuth в сессиях? - PullRequest
1 голос
/ 30 октября 2019

Мне интересно, будет ли хорошей идеей сохранять токены доступа в сеансе.

Я занимаюсь разработкой приложения, которому для доступа к календарю требуется Google OAuth Access Token (следующий docs ). .

$client = new Google_Client();
$client->setAuthConfig('credentials.json');
$client->setAccessType('offline');
$client->addScope(Google_Service_Calendar::CALENDAR_EVENTS);

$redirect_uri = 'https://...';
$client->setRedirectUri($redirect_uri);
if (! isset($_GET['code'])) {
  $auth_url = $client->createAuthUrl();
  header('Location: ' . filter_var($auth_url, FILTER_SANITIZE_URL));
} else {
  $client->authenticate($_GET['code']);
  $_SESSION['access_token'] = $client->getAccessToken();
  header('Location: ' . filter_var($redirect_uri, FILTER_SANITIZE_URL));
}

$client->setAccessToken($_SESSION['accessToken']);

/* Refresh token when expired */
if ($client->isAccessTokenExpired()) {
    // the new access token comes with a refresh token as well
    $client->fetchAccessTokenWithRefreshToken($client->getRefreshToken());
}
$service = new Google_Service_Calendar($client);
...

Не всегда пользователь будет входить на мой сайт, поэтому у меня нет возможности идентифицировать пользователя, поэтому рекомендуется ли сохранять токен в сеансе? Когда я смогу его идентифицировать, могу ли я сохранить его токен в базе данных или лучше следовать шаблону и оставить все в сеансе?

1 Ответ

0 голосов
/ 06 ноября 2019

Пользовательские сеансы могут быть структурированы любым удобным для вас способом.

Ваша цель - использовать правильный OAuth-токен для подходящего пользователя.

Это можно сделать, создав сеанс. для пользователя и хранения токена там, однако, эти сеансы могут истечь раньше, чем токены, которые вы храните в них.

Вы также можете сохранить свои токены обновления в своей базе данных и просто сохранить ссылочный номер (пользовательскийID), который поможет вам связать этот сеанс с пользователем, которого вы обслуживаете. Это может быть полезно, если у вас уже есть структура учетной записи пользователя.

Это официальная документация - интересное чтение, если вы хотите больше узнать о своей ситуации.

...