2012-01-21 7 views
2

アクセストークンが期限切れになっているかどうかを知る方法を教えてください。アクセストークンがGoogle Apiで期限切れになるかどうかを確認する方法

私がしようとするとキャッチ

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"; 
} 

を使用していますが、それでも、それは私がカール

$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); 

を使用したい場合は

「新しいトークンを取得する」印刷し、その後のfile_get_contentsからエラーを取得しますここでエラーをキャッチするにはどうすればよいですか?

//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エラーを投げることはありません。データをロードできない場合は、結果の値はFALSEです。つまり、複数の理由でGoogle API呼び出しが失敗する可能性があるため、他の関数を使用する必要があります。なぜGoogle API PHPクライアントライブラリを使用していないのですかhttp://code.google.com/p/google-api-php-client/source/browse/ – Shadow

関連する問題