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