AuthenticationResult IAuthenticationClient.VerifyAuthentication(HttpContextBase context)
{
try {
Context db = new Context();
string code=context.Request["code"];
AccessTokenDB token = new AccessTokenDB();
var address = String.Format("https://oauth.vk.com/access_token?client_id={0}&client_secret={1}&code={2}&redirect_uri={3}",this.appId,this.appSecret,code,this.redirectUri);
WebClient client = new WebClient();
client.Encoding = System.Text.Encoding.UTF8;
Person person;
var response = client.DownloadString(address);
var access_token=JsonConvert.DeserializeObject<AccessTokenAndId>(response);
token.AccessToken = access_token.accessToken;
db.AccessToken.Add(token);
db.SaveChanges();
address = String.Format("https://api.vk.com/method/users.get?uids={0}&fields=nickname", access_token.userId);
client.Encoding = System.Text.Encoding.UTF8;
response = client.DownloadString(address);
person = JsonConvert.DeserializeObject<Persons>(response).People[0];
return new AuthenticationResult(true,(this as IAuthenticationClient).ProviderName,access_token.userId,person.FirstName + " " +person.LastName,new Dictionary<string,string>());
}
catch(Exception ex){
return new AuthenticationResult(ex);
}
}