/// <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, }; }
/// <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); }