Google API를 사용하여 refreshToken 프로 시저에 문제가 발생하면 만료 된 토큰이 만료되면 refreshToken이 AccessToken을 얻지 못합니다. 이 시점에서 이미 새로 고침 토큰을 db에 저장했습니다.PHP Google API 새로 고침 토큰
$client = new Google_Client();
$client->setApplicationName("APP NAME");
$client->setClientId($client_id);
$client->setClientSecret($client_secret);
$client->setAccessType('offline');
$client->setScopes(array('https://www.googleapis.com/auth/calendar'));
$client->setAccessToken(json_encode($access_token_from_db));
if ($client->isAccessTokenExpired()) :
$client->refreshToken($refresh_token_from_db);
$new_access_token = $client->getAccessToken();
print_r($access_token);
//save to db -- but this fails
endif;
이 실행 후 새 액세스 토큰은 여전히 비어 있습니다. 만료를 확인하기 전에 현재 만료 된 토큰으로 setAccessToken을 설정하더라도 동일한 문제가 지속됩니다.
refreshToken을 이미 저장 한 후 상태가 단순하지 않은 것처럼 보입니다.
내 응용 프로그램에서는 응용 프로그램 목적을 이해하는 데 필요한 경우 작업에 따라 사용자의 달력에 업데이트를 보내도록 cron 작업을 수행합니다.
이 대답은 나에게 올바른 보이지 않는 이유
: How to refresh token with Google API client?이는 $ 클라이언트 -> isAccessTokenExpired() 메소드를 사용하지 않는 있기 때문에 플러스, 깨끗한 해결책이 아니라, 스크립트는해야한다 아주 최소 및 작은 작업을 완료합니다. 이론적으로 :
는- 인증
- 에 주어진 일에 setAccessToken (기능을 통해) 만료 된 경우, 새로운 토큰
- 는 동안
을 토큰을 저장하고 계속 액세스 할 수 새로 고침을 사용 위의 예는 2013 년의 답변과 비슷한 기능을 가지고 있지만 제대로 작동 할 수 있지만 최선의 방법은 아닙니다.
가능한 복제 [구글 API 클라이언트와 토큰을 새로 고침하는 방법?] (http://stackoverflow.com/questions/9241213/how-to-refresh-token -with-google-api-client) – DaImTo
그 대답은 구식이며 isAccessTokenExpired 메소드 대신에 타이밍을 사용하고 복잡한 응답이므로 더 깔끔한 해결책/방법이 가능해야합니다. –
복제본은 새로 고침 토큰이 만료되었다고 생각하지만 가능하지는 않습니다. –