oauth 2.0-PHP:当浏览器关闭时,刷新令牌消失


oauth 2.0 - PHP: Refresh Token disappears when browser is closed.

所以我使用的是google oauth2的PHP客户端库。我需要为我正在构建的应用程序做一个预存会话。刷新令牌在用户首次登录时显示。但是,当用户关闭浏览器并再次登录应用程序时,刷新令牌将不再存在,一小时后会话将结束。

我知道访问类型应该设置为:access_type="脱机"

并且审批提示为:approvel_prompt="自动"

我的问题是,如何使会话持续时间超过1小时?我需要把令牌存储在某个地方吗(比如数据库、cookie等)。如果需要,我该怎么做?我很难理解该怎么做。

谢谢。

是的,如果您想将用户的授权保留在浏览器会话之外,则需要将令牌保存在某个位置。你可以将其保存在数据库中,在他登录你的应用程序后,你可以使用$client->setAccessToken($token)方法加载你保存的令牌。

我不确定PHP库是否会自动刷新令牌,但如果没有,您可以在设置令牌后执行以下操作:

if ($client->isAccessTokenExpired()) {
    $token_data = json_decode($token);
    $client->refreshToken($token_data->refresh_token);
}