2017-11-03 6 views
1

こんにちは、私はユーザーがGoogle OAuth 2.0でログインしようとしたときにオフラインアクセスを設定しています。後でユーザーに再度ログインするよう要求せずに、ユーザーが自分のGoogleアカウントからGoogleアプリケーションからアプリケーションへのアクセスを取り消すことができることを知りました。その後、更新アクセストークンは機能しません。Google Oauth 2.0が私のリプレースアクセストークンが期限切れであるかどうかを確認する

リフレッシュトークンが有効かどうかを確認する方法はありますか?Google api docsから見つけようとしましたが、ヘルプが見つかりませんでした。有効期限を確認できます1時間だけ有効な単純なアクセストークン。

if($client->isAccessTokenExpired()) 

が、私は私のリフレッシュトークンを確認したいが、我々はそれを確認することができます彼らの方法であるか、グーグルを行うOUTH 2.0は、ユーザーが我々のアプリケーションへのアクセスを取り消していたときに私たちのURLを呼び出すことができますいくつかのウェブフックを持っています。ここ

はログイン

$google_redirect_url = $url;  
$client = new \Google_Client(); 
$client->setAuthConfig('/secret.json'); 
$client->setRedirectUri($google_redirect_url); 
$client->setAccessType('offline');  // offline access 
$client->setIncludeGrantedScopes(true); // incremental auth   
$client->setApprovalPrompt('force'); 
$client->setScopes(array(
      'https://www.googleapis.com/auth/plus.me', 
      'https://www.googleapis.com/auth/userinfo.email', 
      'https://www.googleapis.com/auth/userinfo.profile', 
      'https://www.googleapis.com/auth/youtube', 
      'https://www.googleapis.com/auth/youtube.upload' 
     )); 

ための私のコードで私はまた、溶液を探してきたが、それを見つけることができませんでした。

答えて

3

ここで何をするつもりかを検討する必要があります。アクセストークンをリフレッシュしようとする前にGoogleにリクエストを送信して、このリフレッシュトークンを使用するかどうかを尋ねます。それからGoogleがあなたの行くことを言うなら、あなたのリフレッシュトークンを使用してください。

これは理論上は良いアイデアのようにつながりますが、結局私たちはすべてエラーを避けたいのです。しかし、あなたがやっているのは、リフレッシュトークンが機能していない場合、単にエラーを避けるために作成しているリクエストの数を2倍にすることです。なぜ、あなたが出しているリクエスト数を2倍にしたいのですか?

あなたが行う必要があるのは、失敗した場合にユーザーに再度アクセスするように要求するだけで、リフレッシュトークンを使用することです。これが自動的に実行されていると仮定すると、データベースからリフレッシュトークンを削除して、このユーザーの要求を自動的に実行しないようにします。

グーグルがGoogleに提供する最善の方法と唯一の方法は、リフレッシュトークンを検証することです。試してみることです。あなたのライブラリで見つけた方法はおそらくそれをやっているだけです。

+1

Spot on。エラーを正常に処理するだけです。 – ceejayoz

+1

私はこの質問を数年前にも持っていて結論に来ました。私はばかげていました:) – DaImTo

+1

ありがとう@DaImTo私はあなたのポイントが私に試してそれをキャッチしようとしました。 – usama

関連する問題