public virtual OAuthMessage Read(string httpMethod, string httpContentType, Uri requestUri, System.IO.Stream incomingStream) { if (string.IsNullOrEmpty(httpMethod)) { throw new ArgumentOutOfRangeException("httpMethod"); } if (requestUri == null) { throw new ArgumentNullException("requestUri"); } if (incomingStream == null) { throw new ArgumentNullException("incomingStream"); } Dictionary <string, string> oAuthParameters = new Dictionary <string, string>(); if (httpMethod == "POST") { if (httpContentType.Contains("application/x-www-form-urlencoded")) { oAuthParameters = this.ReadFormEncodedParameters(incomingStream); } else { if (!httpContentType.Contains("application/json")) { throw new OAuthMessageSerializationException(string.Format(Resources.ID3721, httpMethod, httpContentType)); } oAuthParameters = this.ReadJsonEncodedParameters(incomingStream); } } else { if (!(httpMethod == "GET")) { throw new OAuthMessageSerializationException(string.Format(Resources.ID3722, httpMethod)); } oAuthParameters = HttpQueryStringParser.Parse(requestUri.Query); } return(this.CreateTypedOAuthMessageFromParameters(OAuthMessageSerializer.GetBaseUrl(requestUri), oAuthParameters)); }
/// <summary> /// Authorizes the specified refresh token. /// </summary> /// <param name="refreshToken">The refresh token.</param> public async Task AuthorizeAsync(string refreshToken) { var authorizeRequest = BuildAccessTokenRequest(refreshToken); var req = new HttpClient(); var response = await req.PostAsync(authorizeRequest.BaseUri, new FormUrlEncodedContent(authorizeRequest.Parameters)); var serializer = new OAuthMessageSerializer(); var deserializedMessage = await serializer.Read(response); var message = deserializedMessage as AccessTokenResponse; if (message != null) { CurrentAccessToken = message; LastAccessTokenRefresh = DateTime.UtcNow; } var endUserAuthorizationFailedResponse = deserializedMessage as EndUserAuthorizationFailedResponse; if (endUserAuthorizationFailedResponse != null) { throw new SecurityException(endUserAuthorizationFailedResponse.ErrorDescription); } var userAuthorizationFailedResponse = deserializedMessage as ResourceAccessFailureResponse; if (userAuthorizationFailedResponse != null) { throw new SecurityException(userAuthorizationFailedResponse.ErrorDescription); } }