我正在使用Google PHP客户端库对网站中的用户进行身份验证。使用非常接近示例in the docs
但是,用户在登录后始终会重定向到主页,即site.com/
。
在登录后将用户退回到请求的网址的正确方法是什么,例如site.com/requested-uri
?
我尝试通过index.php
在初始请求中传递查询参数:
$redirect_uri = 'http://' . $_SERVER['HTTP_HOST'] . '/oauth2callback.php?redirect=' . $_SERVER['REQUEST_URI'];
然后将其传递给docs的示例代码:
$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库中内置这个。知道如何使这项工作吗?
答案 0 :(得分:1)
您可以使用$client->setState($_SERVER["REQUEST_URI"]);
。验证后,您可以从$_GET['state']
收到状态。
我不知道这个方法是否正确,但我在我的应用程序中使用它。