Я написал свою собственную библиотеку Google Plus для PHP, и она до сих пор успешно работает с одной проблемой, которую я не могу продлить expire_time токена доступа. Мне нужно использовать его для дальнейшей обработки, и я не могу ожидать, что пользователь снова войдет в систему, чтобы обновить его.
То, что я хочу сделать, это получить следующий счет G + Page. Я говорю вам об этом, потому что, если есть другой способ получить его, мне не понадобятся 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;
}
а вот генератор токенов доступа:
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"]);
}
Вот что я получил от 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)
Как вы можете видеть выше, полученный у меня access_token истекает через 1 час, но я должен регулярно проверять число подписчиков страниц или количество обведенных кружками, поэтому мне нужен токен бесконечного доступа или расширенный токен.
expires_in никогда не будет больше одного часа. Что вам нужно сделать, это запросить автономный доступ с access_type = offline а потом используйте refresh_token для запроса нового access_token когда истекает access_token.
Токен обновления будет хорош до тех пор, пока Пользователь или же вы не аннулируйте доступ вашего клиента.
Других решений пока нет …