0

私は初めてYouTube APIを使用しており、そのドキュメンテーションに従っています。しかし、基本的ではない機能については、その文書は非常に不明であり、私自身の質問に答えるために私がチェックする他の文書はないようです。トークンがサーバーサイドアプリケーションでオフラインで使用される前に(ユーザーによって)取り消されたかどうかを確認するにはどうすればよいですか?

私に説明してみましょう:

私は基本的な認証/トークンの例では、https://developers.google.com/youtube/reporting/guides/authorization/server-side-web-apps#exampleを提供し、それがうまく機能実装しました。今

、アクセストークンが...私の質問がある(「オフライン」のデータ検索で後で使用するために)データベースではなく、セッションに格納されたと仮定すると:

どのように私は、ユーザーが失効しているかどうかをチェックしますかおそらく自分のアカウント設定を介して私のアプリケーションにアクセスできますか?この方法で取り消され、(今無効な)アクセストークンをオフラインで使用しようとするとどうなりますか?

UPDATE

残念ながら、返される生のエラーがキャッチさが、非常に奇妙であることができる

Uncaught exception 'Google_Service_Exception' with message '{ "error": { "code": 401, "message": "Request had invalid authentication credentials. Expected OAuth 2 access token, login cookie or other valid authentication credential. See https://developers.google.com/identity/sign-in/web/devconsole-project.", "errors": [ { "message": "Request had invalid authentication credentials. Expected OAuth 2 access token, login cookie or other valid authentication credential. See https://developers.google.com/identity/sign-in/web/devconsole-project.", "domain": "global", "reason": "unauthorized" } ], "status": "UNAUTHENTICATED" } } 

あるAn error occurred: { error: invalid_grant, error_description: Token has been expired or revoked. }

を返すされていないようです。エラーが示されたので無効な資格情報がありません...私は許可がありません!

これに関しては、ドキュメントには深刻な欠点があります。

+0

あなたは解決策を見つけましたか? – usama

答えて

0

ユーザーがあなたのアプリへのアクセス権を取り消し、(今無効な)アクセストークンを使用しようとすると、An error occurred: { error: invalid_grant, error_description: Token has been expired or revoked. }というメッセージが返されます。

正しい方法は、エラーが返されたかどうかを確認し、そうであればユーザーを再度認証するようにリダイレクトして、新しいアクセストークンが生成され、アクセスが適切に許可されるようにします。たとえば、次のロジックを取る:

try { 

    //request the service 

} catch (Exception $e) {   

    if($e->getMessage() == "Token has been expired or revoked"){ 
     //redirect user to authenticate again 
    } 
} 
関連する問題