/// <summary> /// Asynchronously makes a request to the access token URL with the given parameters. /// </summary> /// <param name="queryValues">The parameters to make the request with.</param> /// <returns>The data provided in the response to the access token request.</returns> protected Task <IDictionary <string, string> > RequestAccessTokenAsync(IDictionary <string, string> queryValues) { var query = queryValues.FormEncode(); var req = WebRequest.Create(accessTokenUrl); req.Method = "POST"; var body = Encoding.UTF8.GetBytes(query); req.ContentLength = body.Length; req.ContentType = "application/x-www-form-urlencoded"; using (var s = req.GetRequestStream()) { s.Write(body, 0, body.Length); } return(req.GetResponseAsync().ContinueWith(task => { var text = task.Result.GetResponseText(); // Parse the response var data = text.Contains("{") ? WebEx.JsonDecode(text) : WebEx.FormDecode(text); if (data.ContainsKey("error")) { throw new AuthException("Error authenticating: " + data ["error"]); } else if (data.ContainsKey("access_token")) { return data; } else { throw new AuthException("Expected access_token in access token response, but did not receive one."); } })); }
/// <summary> /// Asynchronously makes a request to the access token URL with the given parameters. /// </summary> /// <param name="queryValues">The parameters to make the request with.</param> /// <returns>The data provided in the response to the access token request.</returns> public async Task <IDictionary <string, string> > RequestAccessTokenAsync(IDictionary <string, string> queryValues) { // mc++ changed protected to public for extension methods RefreshToken (Adrian Stevens) var content = new FormUrlEncodedContent(queryValues); HttpClient client = new HttpClient(); HttpResponseMessage response = await client.PostAsync(accessTokenUrl, content).ConfigureAwait(false); string text = await response.Content.ReadAsStringAsync().ConfigureAwait(false); // Parse the response var data = text.Contains("{") ? WebEx.JsonDecode(text) : WebEx.FormDecode(text); if (data.ContainsKey("error")) { throw new AuthException("Error authenticating: " + data["error"]); } #region //--------------------------------------------------------------------------------------- /// Pull Request - manually added/fixed /// OAuth2Authenticator changes to work with joind.in OAuth #91 /// https://github.com/xamarin/Xamarin.Auth/pull/91 /// //else if (data.ContainsKey("access_token")) else if (data.ContainsKey(AccessTokenName)) //--------------------------------------------------------------------------------------- #endregion { } else { #region //--------------------------------------------------------------------------------------- /// Pull Request - manually added/fixed /// OAuth2Authenticator changes to work with joind.in OAuth #91 /// https://github.com/xamarin/Xamarin.Auth/pull/91 /// //throw new AuthException ("Expected access_token in access token response, but did not receive one."); throw new AuthException("Expected " + AccessTokenName + " in access token response, but did not receive one."); //--------------------------------------------------------------------------------------- #endregion } return(data); }