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));
        }
Beispiel #2
0
        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();
            }
        }