代码之家  ›  专栏  ›  技术社区  ›  Vinnie James

在OAuth登录后向用户发送请求uri

  •  0
  • Vinnie James  · 技术社区  · 7 年前

    我正在使用google php客户端库对用户进行站点身份验证。使用非常接近的例子 in the docs

    但是,用户在登录后总是被重定向到主页,即。 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 回复  |  直到 7 年前
        1
  •  1
  •   Wellwisher    7 年前

    你可以使用 $client->setState($_SERVER["REQUEST_URI"]); . 身份验证后,您可以从 $_GET['state'] .

    我不知道这个方法是否正确,但我正在我的申请中使用它。