public async Task <TraktUserToken> GetUserToken(TraktUser traktUser) { var data = new TraktUserTokenRequest { Login = traktUser.UserName, Password = traktUser.Password }; var response = await PostToTrakt(TraktUris.Login, data, null); return(_jsonSerializer.DeserializeFromStream <TraktUserToken>(response)); }
public async Task RefreshUserAuth(TraktUser traktUser, CancellationToken cancellationToken) { var data = new TraktUserTokenRequest { client_id = TraktUris.Id, client_secret = TraktUris.Secret, redirect_uri = "urn:ietf:wg:oauth:2.0:oob" }; if (!string.IsNullOrWhiteSpace(traktUser.PIN)) { data.code = traktUser.PIN; data.grant_type = "authorization_code"; } else if (!string.IsNullOrWhiteSpace(traktUser.RefreshToken)) { data.refresh_token = traktUser.RefreshToken; data.grant_type = "refresh_token"; } else { _logger.Error("Tried to reauthenticate with Trakt, but neither PIN nor refreshToken was available"); } _logger.Info($"{data.code} - {data.grant_type}"); TraktUserToken userToken; using (var response = await PostToTrakt(TraktUris.Token, data, null, cancellationToken).ConfigureAwait(false)) { _logger.Info($"{response}"); userToken = await _jsonSerializer.DeserializeFromStreamAsync <TraktUserToken>(response).ConfigureAwait(false); } if (userToken != null) { traktUser.AccessToken = userToken.access_token; traktUser.RefreshToken = userToken.refresh_token; traktUser.PIN = null; traktUser.AccessTokenExpiration = DateTimeOffset.Now.AddMonths(2); Plugin.Instance.PluginConfiguration.Pin = null; Plugin.Instance.SaveConfiguration(); } }