2016-05-21 17 views
0

GoogleドライブAPIを使用しており、PHPプログラムを使用してOAuthトークンを使用して認証しています。私のテストプログラムでは、私はOAuthのURLに手動で行き、トークンを作成しました。次に、プログラムで使用してファイルに保存しました。次回以降、トークンはファイルから読み込まれ、プログラムはGoogleドライブにアクセスできます。しかし、トークンは1時間しか有効ではないので、その後、ファイルから取り出すトークンはもはや有効ではないため、エラーが発生します。私は手動で新しいトークンを取得する必要がないように、トークンをどのように更新できるかについてはっきりしていません。 CREDファイルが存在する場合、私はそれを取り出すことになる他にそのファイルからトークンを引くOAuthトークンを更新するにはどうすればよいですか?

$client = new Google_Client(); 
$client->setClientId(CLIENT_ID); 
$client->setClientSecret(CLIENT_SECRET); 
$client->setRedirectUri(REDIRECT_URIS); 
$client->setScopes($SCOPES); 
$client->setAccessType('offline'); 
$client->setAuthConfigFile(CLIENT_SECRET_PATH); 

- 後

は私のコードです。今のところ、手動​​で設定している初めてのトークン -

トークンが期限切れになったら、トークンを自動的に更新する必要があります。

if ($client->isAccessTokenExpired()) { 
    //This is where I am running in trouble. 
} 

どのように達成できますか?目標は、手動による介入なしにOAuth認証を実行してGoogleドライブAPIを実行することです。

ありがとうございました!

答えて

0

私は答えを見つけたようです。

私は最初にOAuth urlを使用して、パラメータprompt=consentを含めるようにしました。これにより、ファイルに保存されたリフレッシュトークンが生成されました。その後、コードに追加してトリックを実行しました -

if ($client->isAccessTokenExpired()) { 
    $client->refreshToken($client->getRefreshToken()); 
    file_put_contents(CREDENTIALS_PATH, $client->getAccessToken()); 
} 

これ以降、トークンは1時間後に期限切れになりません。

関連する問題