使用Google Oauth PHP获取用户信息而无需刷新令牌

时间:2015-02-18 00:55:43

标签: php oauth-2.0 google-api google-oauth google-api-php-client

我想在用Google Oauth 2.0登录后获取用户信息。但是我在1小时后不断要求刷新令牌。我不想使用刷新令牌,因为我已将在线访问类型和批准提示设置为自动。

这是导致问题的代码,特别是我的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      = $user['id'];
          $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['token']    = $client->getAccessToken();
    }

1 个答案:

答案 0 :(得分:1)

Refresh the access token, if necessary.

访问令牌的生命周期有限(确切地说是一小时)。如果您的应用需要在单个访问令牌的生命周期之外访问Google API,则需要使用刷新令牌来获取新的访问令牌。

刷新令牌允许您的应用程序获取新的访问令牌。

要回答您的问题,如果您想要访问用户数据的时间超过一小时,则无法使用刷新令牌获取新的访问令牌。