Ejemplo n.º 1
0
        /// <summary>
        /// Performs the refresh request using the provided refresh token
        /// </summary>
        /// <param name="refreshToken"></param>
        /// <returns></returns>
        protected async Task <OAuth2Session> ExchangeRefreshToken(string refreshToken)
        {
            if (string.IsNullOrWhiteSpace(refreshToken))
            {
                throw new ArgumentException("Refresh token cannot be null or empty", "refreshToken");
            }

            ApiRequest apiRequest = new ApiRequest(_config.CanvasApiHostUri, Constants.AuthTokenEndpointString)
                                    .Method(RequestMethod.Post)
                                    .Payload(Constants.RequestParameters.GrantType, Constants.RequestParameters.RefreshToken)
                                    .Payload(Constants.RequestParameters.RefreshToken, refreshToken)
                                    .Payload(Constants.RequestParameters.ClientId, _config.ClientId)
                                    .Payload(Constants.RequestParameters.ClientSecret, _config.ClientSecret);

            IApiResponse <OAuth2Session> apiResponse = await _service.ToResponseAsync <OAuth2Session>(apiRequest).ConfigureAwait(false);

            if (apiResponse.Status == ResponseStatus.Success)
            {
                // Parse and return the new session
                apiResponse.ParseResults(_converter);
                return(apiResponse.ResponseObject);
            }

            // The session has been invalidated, notify subscribers
            OnSessionInvalidated();

            // As well as the caller
            throw new SessionInvalidatedException()
                  {
                      StatusCode = apiResponse.StatusCode,
                  };
        }
Ejemplo n.º 2
0
        /// <summary>
        /// Performs the authentication request using the provided auth code
        /// </summary>
        /// <param name="authCode"></param>
        /// <returns></returns>
        protected async Task <OAuth2Session> ExchangeAuthCode(string authCode)
        {
            if (string.IsNullOrWhiteSpace(authCode))
            {
                throw new ArgumentException("Auth code cannot be null or empty", "authCode");
            }

            ApiRequest apiRequest = new ApiRequest(_config.CanvasApiHostUri, Constants.AuthTokenEndpointString)
                                    .Method(RequestMethod.Post)
                                    .Payload(Constants.RequestParameters.GrantType, Constants.RequestParameters.AuthorizationCode)
                                    .Payload(Constants.RequestParameters.Code, authCode)
                                    .Payload(Constants.RequestParameters.ClientId, _config.ClientId)
                                    .Payload(Constants.RequestParameters.ClientSecret, _config.ClientSecret);

            IApiResponse <OAuth2Session> apiResponse = await _service.ToResponseAsync <OAuth2Session>(apiRequest).ConfigureAwait(false);

            apiResponse.ParseResults(_converter);

            return(apiResponse.ResponseObject);
        }