Php oauth2访问令牌过期

Php oauth2访问令牌过期,php,google-oauth,Php,Google Oauth,一旦我的令牌过期,我将无法注销或访问任何网页,因为它们需要有效的令牌 我也不能登录,因为这也需要登录 或者,我可以禁用它 编辑 非常抱歉,我很累,假设每个人都知道我在说什么。。问题是,当访问令牌到期时,我可以取消设置$\u会话['access\u token'],并强制重新登录(主要问题)或者有一种方法可以刷新/禁用令牌/使其过期,这样它就不会妨碍用户的任何正在进行的进程。我建议您阅读有关OAuth的基本指南,这样您就可以大致了解它 基本上,服务器和客户机要通过一系列步骤来证明他们是他们所说的那

一旦我的令牌过期,我将无法注销或访问任何网页,因为它们需要有效的令牌

我也不能登录,因为这也需要登录

或者,我可以禁用它

编辑


非常抱歉,我很累,假设每个人都知道我在说什么。。问题是,当访问令牌到期时,我可以取消设置$\u会话['access\u token'],并强制重新登录(主要问题)或者有一种方法可以刷新/禁用令牌/使其过期,这样它就不会妨碍用户的任何正在进行的进程。

我建议您阅读有关OAuth的基本指南,这样您就可以大致了解它

基本上,服务器和客户机要通过一系列步骤来证明他们是他们所说的那个人。完成此操作后,服务器将发出短期
访问\u令牌
刷新\u令牌

然后,您可以在所有Api请求中使用此
访问\u令牌。但是,此
访问\u令牌的生存期有限。当它过期时,您必须向服务器提供
刷新\u令牌
,服务器将发出另一个
访问\u令牌

要使用GoogleAPI PHP库执行此操作,请使用以下代码

if($client->isAccessTokenExpired()) {
  echo 'Access Token Expired'; // Debug
  $client->authenticate;
  $newAccessToken = json_decode($client->getAccessToken());
  $client->refreshToken($newAccessToken->refresh_token);
}

你能提供更多的细节来描述你的问题吗(用英语,而不仅仅是代码)?就目前情况而言,我不得不做出许多推论,只是为了知道你在问什么。比我没有耐心的人可能会得到你想要的答案。@jpaugh我很抱歉,我很累,假设每个人都知道我在说什么。。问题是,当访问令牌过期时,我可以取消设置$_会话['access_token']并强制重新登录(主要问题),或者只刷新/禁用令牌/过期,这样就不会妨碍用户的任何正在进行的进程。很抱歉,我没有您的答案。我自己对OAuth只有模糊的认识。但我知道措辞得体的问题会得到更多的关注。祝你好运访问令牌过期-它们的寿命很短-通常为一小时,您需要再次提示用户进行访问,或者将refreshtoken保存到某个位置,以便使用它获取新的访问令牌。这取决于你的应用程序在做什么,当它们不在线时,你是否需要访问这些数据。@DalmTo实际上
客户端id
被认为是公共知识。它用于构建登录URL和客户端API。。我想我很累了哈哈!我将重新创造一个新的秘密。非常感谢。所以,如果我按逻辑执行这些步骤,我会很好
用户登录->刷新令牌存储在数据库中的accesstoken->isaccesstokenexpired()运行下,使用access token->SetFreshToken to db refreshtoken检查db是否有刷新令牌
,我们可以开始了吗?@danny123我建议将
刷新令牌
存储在用户Id下。这是因为
访问令牌
将不断变化。但除此之外,你很好去。谢谢你,我会把它存储在用户id下。不过,我还有一个问题。。抱歉:P如果我将其存储在存储其姓名/电子邮件的用户id下,我将如何与select进行比较,以确定当令牌耗尽时是否无法访问其令牌\u数据?@Danny123对于每个用户,只需存储与其关联的
access\u令牌
刷新\u令牌
。然后,当您需要获取
刷新\u令牌
时,只需查询用户表,其中
访问\u令牌
等于过期的
访问\u令牌
。因此,用户表将具有[
user\u id
user\u email
access\u token
refresh\u token
]。然后用
SELECT*从access\u token='xxxxxxxxx'的用户那里查询它。
我认为如果没有access token,我就不能使用他们当前的$token\u数据,因为情况不是这样,所以很容易。非常感谢。
if($client->isAccessTokenExpired()) {
  echo 'Access Token Expired'; // Debug
  $client->authenticate;
  $newAccessToken = json_decode($client->getAccessToken());
  $client->refreshToken($newAccessToken->refresh_token);
}
//$client is the GApi Client
if($client->isAccessTokenExpired()) {
    echo 'Access Token Expired'; // Debug
    $client->refreshToken('your_refresh_token');
}