さて、この質問は前に尋ねられました ここ 。質問への回答/回答で、ユーザーはrefresh_token
をアプリケーションに保存するように指示します(どこに保存してもかまいませんが、dbではなくセッションです)。 Googleのドキュメントを確認したところ、access_token
には有効期限があります。有効期限が切れると無効になります。これで、一定の間隔ごとに、またはサービスが無効なトークンエラーを返した場合にトークンを自動的に更新して、トークンの寿命を延ばすことができますが、何らかの理由で、この手動プロセスは少しハックな感じがします。私の質問は:
私のアプリケーションでは、フローは次のようになります。
access_token
が定義されていない場合は、ユーザーをGoogleページにリダイレクトし、そこでユーザーがGoogleデータにアクセスするアプリケーションへのアクセスを許可します。これにより、認証コードがアプリに返されます。access_token
およびrefresh_token
を取得します。また、返されたexpires_in
値を保存する必要があります。これにより、access_token
の有効期限が切れ、使用できなくなったことがわかります。access_token
の有効期限が切れているかどうかをDBで確認できます。有効期限が切れている場合は、APIにアクセスする前にrefresh_token
を使用して新しいaccess_token
を取得してください。この方法で問題が発生したことはありません。ユーザーに関する限り、アクセスを許可する必要があるのは1回だけで、それ以降はアプリが認証を処理します。
アプリは、アプリへのアクセスを最初に許可したユーザーに基づいてプログラムで再認証を続け、手動で何もする必要がないため、これで問題は解決するはずです。実際、他の方法があるかどうかはわかりません。OAuthプロセスを再度実行するには、ユーザーがデバイスの前に座って手動でアクセスを許可する必要があるためです。データベースにaccess_token
とrefresh_token
を永続化するポイント。