public async Task RefreshUserAccessToken(TraktUser traktUser) { if (string.IsNullOrWhiteSpace(traktUser.RefreshToken)) { _logger.LogError("Tried to reauthenticate with Trakt, but no refreshToken was available"); return; } var data = new TraktUserRefreshTokenRequest { ClientId = TraktUris.ClientId, ClientSecret = TraktUris.ClientSecret, RedirectUri = "urn:ietf:wg:oauth:2.0:oob", RefreshToken = traktUser.RefreshToken, GrantType = "refresh_token" }; TraktUserAccessToken userAccessToken; try { using (var response = await PostToTrakt(TraktUris.AccessToken, data).ConfigureAwait(false)) { #pragma warning disable CA2007 await using var stream = await response.Content.ReadAsStreamAsync().ConfigureAwait(false); #pragma warning restore CA2007 userAccessToken = await JsonSerializer.DeserializeAsync <TraktUserAccessToken>(stream, _jsonOptions).ConfigureAwait(false); } } catch (HttpRequestException ex) { _logger.LogError(ex, "An error occurred during token refresh"); return; } if (userAccessToken != null) { traktUser.AccessToken = userAccessToken.AccessToken; traktUser.RefreshToken = userAccessToken.RefreshToken; traktUser.AccessTokenExpiration = DateTime.Now.AddSeconds(userAccessToken.ExpirationWithBuffer); Plugin.Instance.SaveConfiguration(); _logger.LogInformation("Successfully refreshed the access token for user {UserId}", traktUser.LinkedMbUserId); } }
public async Task RefreshUserAccessToken(TraktUser traktUser) { if (string.IsNullOrWhiteSpace(traktUser.RefreshToken)) { _logger.LogError("Tried to reauthenticate with Trakt, but no refreshToken was available"); return; } var data = new TraktUserRefreshTokenRequest { client_id = TraktUris.ClientId, client_secret = TraktUris.ClientSecret, redirect_uri = "urn:ietf:wg:oauth:2.0:oob", refresh_token = traktUser.RefreshToken, grant_type = "refresh_token" }; TraktUserAccessToken userAccessToken; try { using (var response = await PostToTrakt(TraktUris.AccessToken, data).ConfigureAwait(false)) { userAccessToken = _jsonSerializer.DeserializeFromStream <TraktUserAccessToken>(response.Content); } } catch (HttpException ex) { _logger.LogError(ex, "An error occurred during token refresh"); return; } if (userAccessToken != null) { traktUser.AccessToken = userAccessToken.access_token; traktUser.RefreshToken = userAccessToken.refresh_token; traktUser.AccessTokenExpiration = DateTime.Now.AddSeconds(userAccessToken.expirationWithBuffer); Plugin.Instance.SaveConfiguration(); _logger.LogInformation("Successfully refreshed the access token for user {UserId}", traktUser.LinkedMbUserId); } }