protected override string QueryAccessToken(Uri returnUrl, string authorizationCode)
{
var entity =
MessagingUtilities.CreateQueryString(
new Dictionary<string, string> {
{ "client_id", _appId },
{ "redirect_uri", returnUrl.AbsoluteUri },
{ "client_secret", _appSecret },
{ "code", authorizationCode },
{ "grant_type", "authorization_code" },
{"resource",GraphApiResource}
});
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;
}