/// <summary> /// Obtains an access token given an authorization code and callback URL. /// </summary> /// <param name="returnUrl"> /// The return url. /// </param> /// <param name="authorizationCode"> /// The authorization code. /// </param> /// <returns> /// The access token. /// </returns> protected override string QueryAccessToken(Uri returnUrl, string authorizationCode) { var builder = new UriBuilder(TokenEndpoint); builder.AppendQueryArgument("client_id", _appId); builder.AppendQueryArgument("redirect_uri", returnUrl.AbsoluteUri); builder.AppendQueryArgument("client_secret", _appSecret); builder.AppendQueryArgument("code", authorizationCode); using (var client = new ExtendedWebClient(_userAgent)) { var data = client.DownloadString(builder.Uri); if (string.IsNullOrEmpty(data)) { return null; } var parsedQueryString = HttpUtility.ParseQueryString(data); return parsedQueryString["access_token"]; } }
/// <summary> /// The get user data. /// </summary> /// <param name="accessToken"> /// The access token. /// </param> /// <returns>A dictionary of profile data.</returns> protected override IDictionary<string, string> GetUserData(string accessToken) { using (var client = new ExtendedWebClient(_userAgent)) { var data = client.DownloadString(UserEndpoint + "?access_token=" + accessToken); return JsonConvert.DeserializeObject<Dictionary<string, string>>(data); } }