2012-01-21 1 views
2

내 액세스 토큰이 만료되었는지 어떻게 알 수 있습니까?Google Api에서 액세스 토큰이 만료되는지 확인하는 방법 PHP

내가 곱슬 곱슬 사용하려면

"새 토큰 가져 오기"를 인쇄합니다 나는 시도 및 캐치

try { 
$result = file_get_contents('https://www.googleapis.com/calendar/v3/calendars/primary/events?access_token='.$accesstoken); 
print_r($result); 
} 
catch(Exception $e){ 
echo "Get new token"; 
} 

를 사용하고 있지만, 여전히 다음 file_get_contents에서 오류를 가져옵니다

$ch = curl_init(); 
curl_setopt($ch,CURLOPT_URL,'https://www.googleapis.com/calendar/v3/calendars/primary/events?access_token='.$accesstoken); 
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); 
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); 
$result = curl_exec($ch); 
curl_close($ch); 

그러면 여기서 오류를 잡으려면 어떻게해야합니까?

//if error because access token is invalid, 
    do here 

// my fixed solution 

$response= json_decode($result); 
if($response->error){ // if result has errors 
    echo "Get new token"; 
} 
+0

당신의 질문은 무엇입니까? 새로운 액세스 토큰을 요청할시기 또는 새로운 액세스 토큰을 묻는 방법을 알고 싶습니까? – Shadow

+0

@shadow 예, 내 액세스 토큰이 만료되었는지 알고 싶습니다. 내 솔루션을 사용하여 내 게시물을 편집했습니다. 언제든지 의견을 말하십시오. –

답변

12

이 URL을 프로빙 :

https://www.googleapis.com/oauth2/v1/tokeninfo?access_token={accessToken} 

의지는 제공 :

{ 
    "audience":<your_client_id>, 
    "user_id":<user_id_if_userinfo.profile_was_authorized>, 
    "scope":"<authorized_scope_1> <authorized_scope_1>", 
    "expires_in":<time_to_live> 
} 

또는 오류 :

{"error":"invalid_token"} 
0

예외를 잡으십시오. HTTP 오류 코드가 401 (인증되지 않음)인지 확인하십시오. 즉, 액세스 토큰이 만료되었고 액세스 토큰이 새로 고침되었습니다.

+1

'file_get_contents()'가 * 모든 * HTTP 상태 코드에 대한 예외를 던질 것입니다. – ThiefMaster

+0

나는 try와 catch를 시도했는데 예외를 잡을 것이다. 그러나 "try {}"에 file_get_contents를 사용하면 권한이없는 경우 캐치 예외로 가지 않는다. –

+0

그래서 file_get_contents()에 대해 읽었고 실제로 HTTP 오류를 던지지 않았습니다. 데이터를로드 할 수없는 경우 result 값은 FALSE입니다. 즉 여러 가지 이유로 인해 Google API 호출이 실패 할 수 있으므로 다른 기능을 사용해야합니다. 왜 Google API PHP 클라이언트 라이브러리를 사용하지 않으시겠습니까? http://code.google.com/p/google-api-php-client/source/browse/ – Shadow

관련 문제