2012-08-17 2 views
0

php google calendar api의 v3를 사용하고 있습니다.php google 캘린더 api에서 새로 고침 토큰을 사용하는 방법 및시기

캘린더 소유자가 권한을 부여한 후 데이터베이스의 새로 고침 토큰을 사용하여 access_token을 저장합니다.

달력 페이지가 누군가에 의해 표시 될 때 나는이 나는 문서에서 본

$client = new apiClient(); 
$client->setApplicationName("My Calendar"); 
$client->setAccessType('offline'); 
$client->setAccessToken($_SESSION['google']['access_token']); 
$calService = new apiCalendarService($client); 
$optParams = array('timeMin' => $gstart, 'timeMax'=> $gend); 
$events = $calService->events->listEvents($_SESSION['google']['google_cal_id'], $optParams); 

어떤 시점에서 내가 가지고있는 새로 고침 토큰을 (사용해야 할 수도 있다는 작동이 코드 조금 모르겠지만이 토큰을 사용하는 방법 및시기입니다. 어떤 시점에서 setAccessToken에서 예외가 발생합니까? 이 문제를 가장 잘 테스트 할 수있는 방법은 무엇입니까 감사합니다.

답변

2

사용자가 재 인증하지 않고 인증을 계속 사용하려면 새로 고침 토큰이 사용됩니다. 예를 들어 Google Analytics API를 사용하는보고 도구가 있습니다. 10 분마다 쿼리를 실행해야하므로 사용자가 우리 앱을 인증하면 사용자가 로그인하지 않아도 자동으로 쿼리를 실행할 수 있도록 새로 고침 토큰을 사용합니다. 기본적으로 새로 고침 토큰을 사용하여 세션을 활성 상태로 유지합니다 사용자 상호 작용없이. 나는 그것이 의미가 있기를 바랍니다.

+0

매번 그렇게합니까? db (전체 JSON refresh-token 포함) 및 $ client-> setAccessToken ($ _SESSION [ 'google'] [ 'access_token']) accesstoken 얻을 경우 여기에 내가 혼란 스러워요; 사용자가 로그인 또는 인증되지 않은 방문자 인 경우에도 작동합니다. – randy

+0

예하지만 액세스 토큰은 만료됩니다. 따라서 지금부터 1 년 후에 토큰을 사용할 수 있기를 원한다면 그렇게 할 수 없습니다. 이 경우 주기적으로 새로 고침 토큰을 사용하여 액세스 토큰이 만료되지 않도록해야합니다. – user1289347

+0

그래서 액세스 토큰이 만료되면 어떻게 되나요? -> $ client-> setAccessToken ($ _SESSION [ 'google'] [ 'access_token']); 이 작업을 수행하는 방법에 대한 예제가 있습니까? 새로 고침 토큰이 새 액세스 토큰을 반환하고 DB에있는 것을 새로운 것으로 대체한다고 가정합니다. 나는 내가 투쟁하는 한 부분을 "정기적으로"추측한다. 나는 매번 새로운 것을 얻고 싶지 않다. 나는 이것이 정말로 효과가 없을 것이라고 생각하고있다. 도움을 주셔서 감사합니다. – randy

2

액세스 토큰의 유효 기간은 3600 초 또는 1 시간입니다. 그러나 새로 고침 토큰을 사용하여 사용자가 다시 인증하지 않고도 새 액세스 토큰을 얻을 수 있습니다.

얻을 새로 고침이 게시물에서 허용 대답 체크 아웃, PHP를 사용하여 토큰하는 방법에 대한 자세한 내용은

: 대신 PHP SDK의 REST API를 사용하는 경우는 기본적 새로 고침 토큰을 보내는 것, Automatically refresh token using google drive api with php script

을 CLIENT_ID , 페이지 하단에 설명 된대로 https://accounts.google.com/o/oauth2/token에 비밀함 here

새로 고침 토큰은 사용자가 취소하거나 프로그래밍 방식으로 취소하지 않는 한 만료되지 않습니다.

관련 문제