2016-11-07 13 views
1

システムカレンダーとユーザーのGoogleカレンダー間で日々の同期を実行するためにGoogle API(PHP)を使用しようとしています。私は、システムユーザがシステム内からカレンダーへのアクセスを1回設定できるようにしたい場合、システムはcronジョブを介して毎日カレンダーを同期させることができます。Googleカレンダーv3のGoogle APIでトークンをリフレッシュ

私は、カレンダーを同期するためのアクセスを許可することから、全プロセスを稼働させることができましたが、トークンの期限切れ時間に悩まされています。

私がv3で動くと思ったのは、古いトークンがリフレッシュトークンとして機能するということでした。だから、ユーザーが承認を与えたら、古いトークンをGoogleに渡すだけで同期を実行できるようになります。

これは、最初のトークンの有効期限が1時間以内であれば、動作するようです。一時間が過ぎると動作が停止し、ユーザーに再びアクセスを許可する必要があります。

ユーザーにアクセスを一度許可してから、ユーザーが再びアクセスを許可することなく1日に1回カレンダーを同期させる方法はありますか?

ありがとうございます!

答えて

1

Googleの許可の間、3600秒または1時間で有効期限が切れるトークンが届きます。期限切れになるのは正常です。したがって、新しい作業トークンを取得するにはリフレッシュトークンを使用する必要があります。ここで

はあなたが必要とする手順は次のとおりです。

$token = $client->getAccessToken(); 
$authObj = json_decode($token); 
if(isset($authObj->refresh_token)) { 
save_refresh_token($authObj->refresh_token); 
} 

このrefresh_tokenを保存することが重要である、あなたは

$client->refreshToken($your_saved_refresh_token); 

でそれを更新し、そのセッションに新しいアクセストークンを設定することができます:

$_SESSION['access_token'] = $client->getAccessToken(); 

詳細については、SO questionを確認してください。

+0

ありがとうございました。すべてを再チェックしたところ、リフレッシュトークンは初めてアクセスしたときにのみ表示されることがわかりました。ありがとう! –

関連する問題