diff options
Diffstat (limited to 'src/DotNetOpenAuth.AspNet/Clients/OAuth2/WindowsLiveClient.cs')
-rw-r--r-- | src/DotNetOpenAuth.AspNet/Clients/OAuth2/WindowsLiveClient.cs | 164 |
1 files changed, 75 insertions, 89 deletions
diff --git a/src/DotNetOpenAuth.AspNet/Clients/OAuth2/WindowsLiveClient.cs b/src/DotNetOpenAuth.AspNet/Clients/OAuth2/WindowsLiveClient.cs index 8d81c02..bddb801 100644 --- a/src/DotNetOpenAuth.AspNet/Clients/OAuth2/WindowsLiveClient.cs +++ b/src/DotNetOpenAuth.AspNet/Clients/OAuth2/WindowsLiveClient.cs @@ -1,41 +1,35 @@ -using System; -using System.Collections.Generic; -using System.IO; -using System.Net; -using System.Text; -using DotNetOpenAuth.Messaging; +namespace DotNetOpenAuth.AspNet.Clients { + using System; + using System.Collections.Generic; + using System.IO; + using System.Net; + using System.Text; + using DotNetOpenAuth.Messaging; -namespace DotNetOpenAuth.AspNet.Clients -{ - public sealed class WindowsLiveClient : OAuth2Client - { - private const string TokenEndpoint = "https://oauth.live.com/token"; - private const string AuthorizationEndpoint = "https://oauth.live.com/authorize"; - private readonly string _appId; - private readonly string _appSecret; + public sealed class WindowsLiveClient : OAuth2Client { + private const string TokenEndpoint = "https://oauth.live.com/token"; + private const string AuthorizationEndpoint = "https://oauth.live.com/authorize"; + private readonly string _appId; + private readonly string _appSecret; - public WindowsLiveClient(string appId, string appSecret) - : base("windowslive") - { - if (String.IsNullOrEmpty(appId)) - { - throw new ArgumentNullException("appId"); - } + public WindowsLiveClient(string appId, string appSecret) + : base("windowslive") { + if (String.IsNullOrEmpty(appId)) { + throw new ArgumentNullException("appId"); + } - if (String.IsNullOrEmpty("appSecret")) - { - throw new ArgumentNullException("appSecret"); - } + if (String.IsNullOrEmpty("appSecret")) { + throw new ArgumentNullException("appSecret"); + } - _appId = appId; - _appSecret = appSecret; - } + _appId = appId; + _appSecret = appSecret; + } - protected override Uri GetServiceLoginUrl(Uri returnUrl) - { - var builder = new UriBuilder(AuthorizationEndpoint); - MessagingUtilities.AppendQueryArgs(builder, - new KeyValuePair<string, string>[] + protected override Uri GetServiceLoginUrl(Uri returnUrl) { + var builder = new UriBuilder(AuthorizationEndpoint); + MessagingUtilities.AppendQueryArgs(builder, + new KeyValuePair<string, string>[] { new KeyValuePair<string, string>("client_id", _appId), new KeyValuePair<string, string>("scope", "wl.basic"), @@ -43,67 +37,59 @@ namespace DotNetOpenAuth.AspNet.Clients new KeyValuePair<string, string>("redirect_uri", returnUrl.ToString()) }); - return builder.Uri; - } + return builder.Uri; + } - protected override string QueryAccessToken(Uri returnUrl, string authorizationCode) - { - var builder = new StringBuilder(); - builder.AppendFormat("client_id={0}", _appId); - builder.AppendFormat("&redirect_uri={0}", Uri.EscapeDataString(returnUrl.ToString())); - builder.AppendFormat("&client_secret={0}", _appSecret); - builder.AppendFormat("&code={0}", authorizationCode); - builder.Append("&grant_type=authorization_code"); + protected override string QueryAccessToken(Uri returnUrl, string authorizationCode) { + var builder = new StringBuilder(); + builder.AppendFormat("client_id={0}", _appId); + builder.AppendFormat("&redirect_uri={0}", Uri.EscapeDataString(returnUrl.ToString())); + builder.AppendFormat("&client_secret={0}", _appSecret); + builder.AppendFormat("&code={0}", authorizationCode); + builder.Append("&grant_type=authorization_code"); - WebRequest tokenRequest = WebRequest.Create(TokenEndpoint); - tokenRequest.ContentType = "application/x-www-form-urlencoded"; - tokenRequest.ContentLength = builder.Length; - tokenRequest.Method = "POST"; + WebRequest tokenRequest = WebRequest.Create(TokenEndpoint); + tokenRequest.ContentType = "application/x-www-form-urlencoded"; + tokenRequest.ContentLength = builder.Length; + tokenRequest.Method = "POST"; - using (Stream requestStream = tokenRequest.GetRequestStream()) - { - var writer = new StreamWriter(requestStream); - writer.Write(builder.ToString()); - writer.Flush(); - } + using (Stream requestStream = tokenRequest.GetRequestStream()) { + var writer = new StreamWriter(requestStream); + writer.Write(builder.ToString()); + writer.Flush(); + } - HttpWebResponse tokenResponse = (HttpWebResponse)tokenRequest.GetResponse(); - if (tokenResponse.StatusCode == HttpStatusCode.OK) - { - using (Stream responseStream = tokenResponse.GetResponseStream()) - { - var tokenData = JsonHelper.Deserialize<OAuth2AccessTokenData>(responseStream); - if (tokenData != null) - { - return tokenData.AccessToken; - } - } - } + HttpWebResponse tokenResponse = (HttpWebResponse)tokenRequest.GetResponse(); + if (tokenResponse.StatusCode == HttpStatusCode.OK) { + using (Stream responseStream = tokenResponse.GetResponseStream()) { + var tokenData = JsonHelper.Deserialize<OAuth2AccessTokenData>(responseStream); + if (tokenData != null) { + return tokenData.AccessToken; + } + } + } - return null; - } + return null; + } - protected override IDictionary<string, string> GetUserData(string accessToken) - { - WindowsLiveUserData graph; - var request = WebRequest.Create("https://apis.live.net/v5.0/me?access_token=" + Uri.EscapeDataString(accessToken)); - using (var response = request.GetResponse()) - { - using (var responseStream = response.GetResponseStream()) - { - graph = JsonHelper.Deserialize<WindowsLiveUserData>(responseStream); - } - } + protected override IDictionary<string, string> GetUserData(string accessToken) { + WindowsLiveUserData graph; + var request = WebRequest.Create("https://apis.live.net/v5.0/me?access_token=" + Uri.EscapeDataString(accessToken)); + using (var response = request.GetResponse()) { + using (var responseStream = response.GetResponseStream()) { + graph = JsonHelper.Deserialize<WindowsLiveUserData>(responseStream); + } + } - var userData = new Dictionary<string, string>(); - userData.AddItemIfNotEmpty("id", graph.Id); - userData.AddItemIfNotEmpty("username", graph.Name); - userData.AddItemIfNotEmpty("name", graph.Name); - userData.AddItemIfNotEmpty("link", graph.Link == null ? null : graph.Link.ToString()); - userData.AddItemIfNotEmpty("gender", graph.Gender); - userData.AddItemIfNotEmpty("firstname", graph.FirstName); - userData.AddItemIfNotEmpty("lastname", graph.LastName); - return userData; - } - } + var userData = new Dictionary<string, string>(); + userData.AddItemIfNotEmpty("id", graph.Id); + userData.AddItemIfNotEmpty("username", graph.Name); + userData.AddItemIfNotEmpty("name", graph.Name); + userData.AddItemIfNotEmpty("link", graph.Link == null ? null : graph.Link.ToString()); + userData.AddItemIfNotEmpty("gender", graph.Gender); + userData.AddItemIfNotEmpty("firstname", graph.FirstName); + userData.AddItemIfNotEmpty("lastname", graph.LastName); + return userData; + } + } } |