【问题标题】:Getting Users info with Google Oauth PHP without refresh tokens使用 Google Oauth PHP 获取用户信息,无需刷新令牌
【发布时间】:2015-04-18 21:25:33
【问题描述】:

我想在用户使用 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();
    }

【问题讨论】:

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


    【解决方案1】:

    Refresh the access token, if necessary.

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

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

    要回答您的问题,如果您想在超过一小时的时间内访问您的用户数据,不使用刷新令牌来获取新的访问令牌是不可能做到这一点的。

    【讨论】:

    • 我不需要访问数据,因为我在他们第一次登录时将其保存在我的数据库中。但我假设除非我有离线访问权限,否则我不能存储他们的信息?有没有办法解决这个问题?
    • 所有离线访问都会返回一个 refreshToken 给您,这样您就可以使用它而无需再次向用户请求访问权限。
    • 我的最终目标是不让用户继续授予离线访问权限并使用上述代码保存他们的信息。如果没有离线访问,这可能吗?
    • 保存刷新令牌,您将能够获得一个新的访问令牌来访问数据而无需再次询问。我认为你应该阅读 Oauth 的 rfc 我认为你在某种程度上误解了一些东西
    • 所以你的意思是一旦刷新令牌被使用,下次用户登录它就不会要求离线访问?
    猜你喜欢
    • 2015-11-26
    • 1970-01-01
    • 2015-10-11
    • 2014-07-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-03-20
    • 2017-09-05
    相关资源
    最近更新 更多