Отправить пользователя на REQUEST_URI после входа в Oauth - PullRequest
0 голосов
/ 07 июня 2018

Я использую клиентскую библиотеку Google PHP для аутентификации пользователей на сайте.Использование очень близко к примеру в документах

Однако пользователи всегда перенаправляются на домашнюю страницу после входа в систему, то есть site.com/.

Как правильно вернуть пользователей на запрошенный URL после входа в систему, например, site.com/requested-uri?

Я пытался передать параметр запроса наначальный запрос через index.php:

$redirect_uri = 'http://' . $_SERVER['HTTP_HOST'] . '/oauth2callback.php?redirect=' . $_SERVER['REQUEST_URI'];

Затем передайте его в пример кода из документов:

$uri = parse_url($_SERVER["REQUEST_URI"]);
parse_str($uri['query'], $query);
$redirect = $query['redirect'];

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();
  $redirect_uri = 'http://' . $_SERVER['HTTP_HOST'] . $redirect;
  header('Location: ' . filter_var($redirect_uri, FILTER_SANITIZE_URL));
}

Однако, он все еще перенаправляет беззапрошенный URI.

Я чувствую, что должен быть способ сделать это встроенным в библиотеку PHP.Есть идеи, как заставить это работать?

1 Ответ

0 голосов
/ 07 июня 2018

Вы можете использовать $client->setState($_SERVER["REQUEST_URI"]);.После аутентификации вы можете получить состояние от $_GET['state'].

Я не знаю, правильный ли этот метод, но я использую его в своем приложении.

...