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小时后到期,但是我必须定期检查页面关注者或“圈数”计数,因此我需要一个无休止的访问令牌或扩展的令牌。
expires_in不得超过一小时。您需要做的是使用access_type = offline请求脱机访问,然后在access_token过期时使用refresh_token请求新的access_token。