如何延长Google Plus access_token expire_time?

Emr*_*din 1 php google-api google-plus google-plus-signin

我已经为PHP编写了自己的Google Plus库,到目前为止,它可以成功运行,但存在一个问题,我无法延长访问令牌的expire_time。我需要将其用于进一步处理,我无法期望用户再次登录以续订它。

我想做的就是获得Google+专页的关注人数。我告诉您这是因为,如果有另一种获取方式,那么我将不需要API。

如果没有,那么看看我到目前为止所得到的:

这是我的登录URL生成器:

    public function generateLoginUrl()
    {
        $arr = array(
            "scope" => "https://www.googleapis.com/auth/plus.".implode(".", Config::$scopes)."",
            "state" => "generate_a_unique_state_value",
            "redirect_uri" => Config::$redirect_uri,
            "response_type" => "code",
            "client_id" => Config::$client_id,
            "access_type" => "offline"
        );

        $oauth_url  = "https://accounts.google.com/o/oauth2/auth?".http_build_query($arr);

        return $oauth_url;
    }
Run Code Online (Sandbox Code Playgroud)

这是访问令牌生成器:

    public function getAccessToken()
    {
        $post = array(
            "code" => $_SESSION["code"],
            "grant_type" => "authorization_code",
            "redirect_uri" => Config::$redirect_uri,
            "client_id" => Config::$client_id,
            "client_secret" => Config::$client_secret
        );

        $result = $this->createRequest("https://accounts.google.com/o/oauth2/token", $post);
        $result = json_decode($result);

        $_SESSION["instagram_token"] = $result->access_token;
        unset($_SESSION["code"]);
    }
Run Code Online (Sandbox Code Playgroud)

我从getAccessToken得到的就是这样的例子:

object(stdClass)[2]
  public 'access_token' => string 'ya29.VAHbw-eZNhhrvJC8JLGuTwAuRyBfqEf9lA_lPC5gcBMvYINsz9nUJyw5-nEqHyA' (length=83)
  public 'token_type' => string 'Bearer' (length=6)
  public 'expires_in' => int 3599
  public 'id_token' => string 'eyJhbGciOiJSUzI1NiIsImtpZCI6IjBlMDYzZGUwYzlmNjY4NmRlYjY2ZTc0NTRiMzIwMWMxMTE0ZWJhNmUifQ.eyJpc3MiOiJhY2NvdW50cy5nb29nbGUuY29tIiwic3ViIjoiMTA0OTE3NDIxMDA2NTYyNjIxODA5IiwiYXpwIjoiNzc2OTUiLCJlbWFpbF92ZXJpZmllZCI6dHJ1ZSwiYXVkIjoiNzc2OTU1MjgyODA3LXZvOWk4b2U5NXUyYzY5MW9scnFoaG51N3I5bjE3NjRjLmFwcHMuZ29vZ2xldXNlcmNvbnRlbnQuY29tIiwiaWF0IjoxN'... (length=719)
Run Code Online (Sandbox Code Playgroud)

如您在上面看到的,我获得的access_token在1小时后到期,但是我必须定期检查页面关注者或“圈数”计数,因此我需要一个无休止的访问令牌或扩展的令牌。

Jay*_*Lee 5

expires_in不得超过一小时。您需要做的是使用access_type = offline请求脱机访问,然后在access_token过期时使用refresh_token请求新的access_token。

只要用户不撤消客户端的访问权限,刷新令牌就可以使用。