public override void GetAccessTokenByCode(string code)
{
var response = HttpPost(TOKEN_URL, new
{
grant_type = "authorization_code",
client_id = ClientId,
client_secret = ClientSecret,
code = code,
redirect_uri = CallbackUrl
});
if (response.StatusCode != System.Net.HttpStatusCode.OK)
return;
var result = response.Content.ReadAsStringAsync().Result;
var accessToken = string.Empty;
var pattern = @"access_token=(([\d|a-zA-Z]*))";
if (Regex.IsMatch(result, pattern))
{
accessToken = Regex.Match(result, pattern).Groups[1].Value;
}
response = HttpGet(OPEN_API_URL, new Dictionary<string, object>
{
{"access_token" , accessToken}
});
if (response.StatusCode != System.Net.HttpStatusCode.OK)
return;
result = response.Content.ReadAsStringAsync().Result;
pattern = @"\""openid\"":\""([\d|a-zA-Z]+)\""";
if (!Regex.IsMatch(result, pattern))
{
return;
}
AccessToken = accessToken;
OpenId = Regex.Match(result, pattern).Groups[1].Value;
isAccessTokenSet = true;
}