0

首先,我使用此站点https://github.com/google/google-api-php-client的 Google OAuth 2.0 代码

我需要找出令牌在此 oauth 目录中的哪个位置过期并将您注销。我在使用刷新令牌时遇到问题,通常令牌会在 1 小时内过期并引发错误,但每次我进行更改以查看代码是否有效时,我都无法等待 1 小时。我已将代码中的一些时间设置更改为 10 或 60 秒,但它们什么也没做。请让我知道哪个文件以及我可以在哪里更改令牌过期的时间并注销已登录的用户。

谢谢,

我添加了以下代码,因为问题出在此处,此 get 函数的某些内容未更新/使用刷新令牌。我怎样才能更好地编写此代码。

    $service = new Google_Service_Oauth2 ($client);

    if ($client->getAccessToken()) {
        //For logged in user, get details from google using access token
        $user = $service->userinfo->get();
        $user_id = filter_var($user['id'],FILTER_SANITIZE_SPECIAL_CHARS);
        $user_name = filter_var($user['name'], FILTER_SANITIZE_SPECIAL_CHARS);
        $first_name = filter_var($user['given_name'], FILTER_SANITIZE_SPECIAL_CHARS);
        $last_name = filter_var($user['family_name'], FILTER_SANITIZE_SPECIAL_CHARS);
        $email = filter_var($user['email'], FILTER_SANITIZE_EMAIL);
        // $profile_url = filter_var($user['link'], FILTER_VALIDATE_URL);
        $profile_image_url = filter_var($user['picture'], FILTER_VALIDATE_URL);
        $gender = filter_var($user['gender'], FILTER_SANITIZE_SPECIAL_CHARS);
        // $personMarkup = "$email<div><img src='$profile_image_url?sz=50'</div>";
        $_SESSION['upload_token'] = $client->getAccessToken();
    }
4

1 回答 1

1

无法更改 Google 的访问令牌到期时间。但是,如果令牌已过期或在 30 秒后过期,则该Google_Client::isAccessTokenExpired()方法将返回。true您的代码不应该只在令牌失败后才需要处理更新令牌,而是可以在 使用该特定访问令牌调用任何方法之前检查访问令牌是否已过期。

仍然存在一个边缘情况:您可以通过手动撤销访问令牌(应用程序的带外)来模拟它:

curl https://accounts.google.com/o/oauth2/revoke?token=<access_token>

然后运行/测试仍然保留现在已撤销的访问令牌的代码。已撤销或过期(“invalid_token”)的访问错误代码相同,处理方式也相同。

于 2015-01-23T21:24:03.143 回答