internal async Task RefreshAsync() { var accessToken = _accessTokenStorage.Load(); var refreshToken = accessToken?.RefreshToken; if (refreshToken == null) { return; } var requestTime = DateTime.Now; var refreshResult = await _authorizationProvider.RefreshAsync(refreshToken); accessToken = new AccessToken { Value = refreshResult.AccessToken, ExpiresAt = requestTime.AddSeconds(refreshResult.ExpiresIn).AddMinutes(-5),// 5 分钟用作缓冲 TokenType = refreshResult.TokenType, Scope = refreshResult.Scope, RefreshToken = refreshResult.RefreshToken, UserId = accessToken.UserId }; _accessTokenStorage.Save(accessToken); }
internal async Task <AccessToken> SignInAndGetAccessTokenAsync() { var accessToken = GetAccessToken(); if (accessToken != null) { return(accessToken); } var requestTime = DateTime.Now; var authorizationUri = new Uri($"https://api.weibo.com/oauth2/authorize?client_id={_weiboOptions.AppKey}&redirect_uri={_weiboOptions.RedirectUri}"); var authorizationResult = await _authorizationProvider.AuthorizeAsync(authorizationUri, new Uri(_weiboOptions.RedirectUri)); accessToken = new AccessToken() { ExpiresAt = requestTime.AddSeconds(authorizationResult.ExpiresIn).AddMinutes(-5),// 5 分钟用作缓冲 UserId = authorizationResult.UserId, Value = authorizationResult.AccessToken }; _accessTokenStorage.Save(accessToken); return(accessToken); }