/// <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) { // Note: Facebook doesn't like us to url-encode the redirect_uri value var builder = new UriBuilder(TokenEndpoint); builder.AppendQueryArgs( new Dictionary <string, string> { { "client_id", _appId }, { "redirect_uri", NormalizeHexEncoding(returnUrl.AbsoluteUri) }, { "client_secret", _appSecret }, { "code", authorizationCode }, { "scope", "" }, }); using (var client = new WebClient()) { string data = client.DownloadString(builder.Uri); if (string.IsNullOrEmpty(data)) { return(null); } _accessTokenResponse = JsonConvert.DeserializeObject <VkAccessTokenResponse>(data); if (_accessTokenResponse != null) { return(_accessTokenResponse.access_token); } return(string.Empty); } }
/// <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) { // Note: Facebook doesn't like us to url-encode the redirect_uri value var builder = new UriBuilder(TokenEndpoint); builder.AppendQueryArgs( new Dictionary<string, string> { { "client_id", _appId }, { "redirect_uri", NormalizeHexEncoding(returnUrl.AbsoluteUri) }, { "client_secret", _appSecret }, { "code", authorizationCode }, { "scope", "" }, }); using (var client = new WebClient()) { string data = client.DownloadString(builder.Uri); if (string.IsNullOrEmpty(data)) { return null; } _accessTokenResponse = JsonConvert.DeserializeObject<VkAccessTokenResponse>(data); if (_accessTokenResponse != null) { return _accessTokenResponse.access_token; } return string.Empty; } }