私は IAuthorizationState (AuthorizationState) と WebServerClient を使用して作業しており、取得時にフレームワークが取得するためにどの呼び出しを行う必要があるかについて最適な決定を下せるように、認証状態情報を永続化する正しい方法を見つけようとしています。 Web サービスの呼び出しに必要なアクセス トークン。
ゼロから始めて、DB に永続化されたトークンがまだないと仮定すると、次の手順を実行します。
WebServerClient.PrepareRequestUserAuthorization
- ユーザーは Google に送信されます。URL には、更新トークンのオフライン パラメータが含まれていますProcessUserAuthorization
- Google からコード パラメータ (認証コード) を取得し、呼び出して AccessToken と RefreshToken を有効期限とともに取得します
それを永続化したい場合は、日付も永続化されるようにオブジェクト全体を永続化する必要がありますか、それとも 2 つのトークンで十分でしょうか?
ユーザーが認証状態情報を必要とする別のアクションを実行する場合、DB ルックアップを実行してトークンを取得できるようになりました。トークンを取得した後、常に RefreshAuthorization メソッドを呼び出す必要がありますか?それとも、日付が有効期限を過ぎているかどうかを確認するために独自のロジックを実行する必要がありますか?
更新 1:
IAuthorizationState を最後の状態に完全に復元できるように、DB に日付を保持することになりました。それから私は電話します
client.RefreshAuthorization(auth, TimeSpan.FromSeconds(MinRefreshTimespanInSec));
トークンが最終的に更新された場合は true を返し、トークンがまだ有効で更新する必要がない場合は false を返します。変数 auth は、DB から復元された承認状態です。