protected override string QueryAccessToken(Uri returnUrl, string authorizationCode)
{
var entity =
MessagingUtilities.CreateQueryString(
new Dictionary<string, string>
{
{"client_id", _clientId},
{"redirect_uri", returnUrl.AbsoluteUri},
{"client_secret", _clientSecret},
{"code", authorizationCode},
{"grant_type", "authorization_code"}
});
var tokenRequest = WebRequest.Create(_tokenEndpoint);
tokenRequest.ContentType = "application/x-www-form-urlencoded";
tokenRequest.ContentLength = entity.Length;
tokenRequest.Method = "POST";
using (var requestStream = tokenRequest.GetRequestStream())
{
var writer = new StreamWriter(requestStream);
writer.Write(entity);
writer.Flush();
}
var tokenResponse = (HttpWebResponse)tokenRequest.GetResponse();
if (tokenResponse.StatusCode == HttpStatusCode.OK)
{
using (var responseStream = tokenResponse.GetResponseStream())
{
var tokenData = JsonHelper.Deserialize<OAuth2AccessTokenData>(responseStream);
if (tokenData != null)
{
return tokenData.AccessToken;
}
}
}
return null;
}