diff options
Diffstat (limited to 'samples/OAuthConsumer')
-rw-r--r-- | samples/OAuthConsumer/GoogleAddressBook.aspx.cs | 37 | ||||
-rw-r--r-- | samples/OAuthConsumer/GoogleApps2Legged.aspx.cs | 22 | ||||
-rw-r--r-- | samples/OAuthConsumer/OAuthConsumer.csproj | 3 | ||||
-rw-r--r-- | samples/OAuthConsumer/SampleWcf.aspx.cs | 50 | ||||
-rw-r--r-- | samples/OAuthConsumer/SignInWithTwitter.aspx.cs | 7 | ||||
-rw-r--r-- | samples/OAuthConsumer/Twitter.aspx.cs | 47 | ||||
-rw-r--r-- | samples/OAuthConsumer/Web.config | 4 | ||||
-rw-r--r-- | samples/OAuthConsumer/Yammer.aspx.cs | 43 |
8 files changed, 64 insertions, 149 deletions
diff --git a/samples/OAuthConsumer/GoogleAddressBook.aspx.cs b/samples/OAuthConsumer/GoogleAddressBook.aspx.cs index 8a2a816..ad25536 100644 --- a/samples/OAuthConsumer/GoogleAddressBook.aspx.cs +++ b/samples/OAuthConsumer/GoogleAddressBook.aspx.cs @@ -2,6 +2,7 @@ using System; using System.Configuration; using System.Linq; + using System.Net; using System.Text; using System.Web; using System.Web.UI; @@ -14,50 +15,34 @@ /// A page to demonstrate downloading a Gmail address book using OAuth. /// </summary> public partial class GoogleAddressBook : System.Web.UI.Page { - private string AccessToken { - get { return (string)Session["GoogleAccessToken"]; } + private AccessToken AccessToken { + get { return (AccessToken)Session["GoogleAccessToken"]; } set { Session["GoogleAccessToken"] = value; } } - private InMemoryTokenManager TokenManager { - get { - var tokenManager = (InMemoryTokenManager)Application["GoogleTokenManager"]; - if (tokenManager == null) { - string consumerKey = ConfigurationManager.AppSettings["googleConsumerKey"]; - string consumerSecret = ConfigurationManager.AppSettings["googleConsumerSecret"]; - if (!string.IsNullOrEmpty(consumerKey)) { - tokenManager = new InMemoryTokenManager(consumerKey, consumerSecret); - Application["GoogleTokenManager"] = tokenManager; - } - } - - return tokenManager; - } - } - protected async void Page_Load(object sender, EventArgs e) { - if (this.TokenManager != null) { + var google = new GoogleConsumer(); + if (google.ConsumerKey != null) { this.MultiView1.ActiveViewIndex = 1; if (!IsPostBack) { - var google = new WebConsumer(GoogleConsumer.ServiceDescription, this.TokenManager); - // Is Google calling back with authorization? - var accessTokenResponse = await google.ProcessUserAuthorizationAsync(new HttpRequestWrapper(Request), Response.ClientDisconnectedToken); + var accessTokenResponse = await google.ProcessUserAuthorizationAsync(this.Request.Url); if (accessTokenResponse != null) { this.AccessToken = accessTokenResponse.AccessToken; - } else if (this.AccessToken == null) { + } else if (this.AccessToken.Token == null) { // If we don't yet have access, immediately request it. - await GoogleConsumer.RequestAuthorizationAsync(google, GoogleConsumer.Applications.Contacts); + Uri redirectUri = await google.RequestUserAuthorizationAsync(GoogleConsumer.Applications.Contacts); + this.Response.Redirect(redirectUri.AbsoluteUri); } } } } protected async void getAddressBookButton_Click(object sender, EventArgs e) { - var google = new WebConsumer(GoogleConsumer.ServiceDescription, this.TokenManager); + var google = new GoogleConsumer(); - XDocument contactsDocument = await GoogleConsumer.GetContactsAsync(google, this.AccessToken, 5, 1, Response.ClientDisconnectedToken); + XDocument contactsDocument = await google.GetContactsAsync(this.AccessToken, 5, 1, Response.ClientDisconnectedToken); var contacts = from entry in contactsDocument.Root.Elements(XName.Get("entry", "http://www.w3.org/2005/Atom")) select new { Name = entry.Element(XName.Get("title", "http://www.w3.org/2005/Atom")).Value, Email = entry.Element(XName.Get("email", "http://schemas.google.com/g/2005")).Attribute("address").Value }; StringBuilder tableBuilder = new StringBuilder(); diff --git a/samples/OAuthConsumer/GoogleApps2Legged.aspx.cs b/samples/OAuthConsumer/GoogleApps2Legged.aspx.cs index af490cf..cff24ea 100644 --- a/samples/OAuthConsumer/GoogleApps2Legged.aspx.cs +++ b/samples/OAuthConsumer/GoogleApps2Legged.aspx.cs @@ -12,26 +12,10 @@ using DotNetOpenAuth.OAuth.Messages; public partial class GoogleApps2Legged : System.Web.UI.Page { - private InMemoryTokenManager TokenManager { - get { - var tokenManager = (InMemoryTokenManager)Application["GoogleTokenManager"]; - if (tokenManager == null) { - string consumerKey = ConfigurationManager.AppSettings["googleConsumerKey"]; - string consumerSecret = ConfigurationManager.AppSettings["googleConsumerSecret"]; - if (!string.IsNullOrEmpty(consumerKey)) { - tokenManager = new InMemoryTokenManager(consumerKey, consumerSecret); - Application["GoogleTokenManager"] = tokenManager; - } - } - - return tokenManager; - } - } - protected async void Page_Load(object sender, EventArgs e) { - var google = new WebConsumer(GoogleConsumer.ServiceDescription, this.TokenManager); - string accessToken = await google.RequestNewClientAccountAsync(cancellationToken: Response.ClientDisconnectedToken); - using (var httpClient = google.CreateHttpClient(accessToken)) { + var google = new GoogleConsumer(); + var accessToken = await google.RequestNewClientAccountAsync(); + using (var httpClient = google.CreateHttpClient(accessToken.AccessToken)) { await httpClient.GetAsync("http://someUri", Response.ClientDisconnectedToken); } } diff --git a/samples/OAuthConsumer/OAuthConsumer.csproj b/samples/OAuthConsumer/OAuthConsumer.csproj index 12553c3..94bed9c 100644 --- a/samples/OAuthConsumer/OAuthConsumer.csproj +++ b/samples/OAuthConsumer/OAuthConsumer.csproj @@ -107,9 +107,6 @@ </None> </ItemGroup> <ItemGroup> - <Compile Include="..\DotNetOpenAuth.ApplicationBlock\InMemoryTokenManager.cs"> - <Link>Code\InMemoryTokenManager.cs</Link> - </Compile> <Compile Include="Global.asax.cs"> <DependentUpon>Global.asax</DependentUpon> </Compile> diff --git a/samples/OAuthConsumer/SampleWcf.aspx.cs b/samples/OAuthConsumer/SampleWcf.aspx.cs index 9c32f59..4e0d6cd 100644 --- a/samples/OAuthConsumer/SampleWcf.aspx.cs +++ b/samples/OAuthConsumer/SampleWcf.aspx.cs @@ -24,9 +24,9 @@ public partial class SampleWcf : System.Web.UI.Page { protected async void Page_Load(object sender, EventArgs e) { if (!IsPostBack) { - if (Session["WcfTokenManager"] != null) { - WebConsumer consumer = this.CreateConsumer(); - var accessTokenMessage = await consumer.ProcessUserAuthorizationAsync(new HttpRequestWrapper(Request), Response.ClientDisconnectedToken); + var consumer = this.CreateConsumer(); + if (consumer.ConsumerKey != null) { + var accessTokenMessage = await consumer.ProcessUserAuthorizationAsync(this.Request.Url); if (accessTokenMessage != null) { Session["WcfAccessToken"] = accessTokenMessage.AccessToken; this.authorizationLabel.Text = "Authorized! Access token: " + accessTokenMessage.AccessToken; @@ -36,7 +36,7 @@ } protected async void getAuthorizationButton_Click(object sender, EventArgs e) { - WebConsumer consumer = this.CreateConsumer(); + var consumer = this.CreateConsumer(); UriBuilder callback = new UriBuilder(Request.Url); callback.Query = null; string[] scopes = (from item in this.scopeList.Items.OfType<ListItem>() @@ -44,11 +44,10 @@ select item.Value).ToArray(); string scope = string.Join("|", scopes); var requestParams = new Dictionary<string, string> { - { "scope", scope }, - }; - var response = await consumer.PrepareRequestUserAuthorizationAsync(callback.Uri, requestParams, null, Response.ClientDisconnectedToken); - var responseMessage = await consumer.Channel.PrepareResponseAsync(response, Response.ClientDisconnectedToken); - await responseMessage.SendAsync(new HttpResponseWrapper(Response), Response.ClientDisconnectedToken); + { "scope", scope }, + }; + Uri redirectUri = await consumer.RequestUserAuthorizationAsync(callback.Uri, requestParams); + this.Response.Redirect(redirectUri.AbsoluteUri); } protected async void getNameButton_Click(object sender, EventArgs e) { @@ -80,16 +79,15 @@ private async Task<T> CallServiceAsync<T>(Func<DataApiClient, T> predicate) { DataApiClient client = new DataApiClient(); var serviceEndpoint = new MessageReceivingEndpoint(client.Endpoint.Address.Uri, HttpDeliveryMethods.AuthorizationHeaderRequest | HttpDeliveryMethods.PostRequest); - var accessToken = Session["WcfAccessToken"] as string; - if (accessToken == null) { + var accessToken = (AccessToken)(Session["WcfAccessToken"] ?? default(AccessToken)); + if (accessToken.Token == null) { throw new InvalidOperationException("No access token!"); } var httpRequest = new HttpRequestMessage(HttpMethod.Post, client.Endpoint.Address.Uri); - using (WebConsumer consumer = this.CreateConsumer()) { - using (var handler = consumer.CreateMessageHandler(accessToken)) { - handler.ApplyAuthorization(httpRequest); - } + var consumer = this.CreateConsumer(); + using (var handler = consumer.CreateMessageHandler(accessToken)) { + handler.ApplyAuthorization(httpRequest); } HttpRequestMessageProperty httpDetails = new HttpRequestMessageProperty(); @@ -100,27 +98,17 @@ } } - private WebConsumer CreateConsumer() { + private Consumer CreateConsumer() { string consumerKey = "sampleconsumer"; string consumerSecret = "samplesecret"; - var tokenManager = Session["WcfTokenManager"] as InMemoryTokenManager; - if (tokenManager == null) { - tokenManager = new InMemoryTokenManager(consumerKey, consumerSecret); - Session["WcfTokenManager"] = tokenManager; - } MessageReceivingEndpoint oauthEndpoint = new MessageReceivingEndpoint( new Uri("http://localhost:65169/OAuth.ashx"), HttpDeliveryMethods.PostRequest); - WebConsumer consumer = new WebConsumer( - new ServiceProviderDescription { - RequestTokenEndpoint = oauthEndpoint, - UserAuthorizationEndpoint = oauthEndpoint, - AccessTokenEndpoint = oauthEndpoint, - TamperProtectionElements = new DotNetOpenAuth.Messaging.ITamperProtectionChannelBindingElement[] { - new HmacSha1SigningBindingElement(), - }, - }, - tokenManager); + var consumer = new Consumer( + consumerKey, + consumerSecret, + new ServiceProviderDescription(oauthEndpoint.Location.AbsoluteUri, oauthEndpoint.Location.AbsoluteUri, oauthEndpoint.Location.AbsoluteUri), + new CookieTemporaryCredentialStorage()); return consumer; } diff --git a/samples/OAuthConsumer/SignInWithTwitter.aspx.cs b/samples/OAuthConsumer/SignInWithTwitter.aspx.cs index f90d557..93462d5 100644 --- a/samples/OAuthConsumer/SignInWithTwitter.aspx.cs +++ b/samples/OAuthConsumer/SignInWithTwitter.aspx.cs @@ -3,6 +3,7 @@ using System.Collections.Generic; using System.Configuration; using System.Linq; + using System.Net; using System.Web; using System.Web.Security; using System.Web.UI; @@ -19,7 +20,7 @@ this.MultiView1.ActiveViewIndex = 1; if (!IsPostBack) { - var tuple = await TwitterConsumer.TryFinishSignInWithTwitterAsync(Response.ClientDisconnectedToken); + var tuple = await TwitterConsumer.TryFinishSignInWithTwitterAsync(); if (tuple != null) { string screenName = tuple.Item1; int userId = tuple.Item2; @@ -35,8 +36,8 @@ } protected async void signInButton_Click(object sender, ImageClickEventArgs e) { - var response = await TwitterConsumer.StartSignInWithTwitterAsync(this.forceLoginCheckbox.Checked, Response.ClientDisconnectedToken); - await response.SendAsync(); + Uri redirectUri = await TwitterConsumer.StartSignInWithTwitterAsync(this.forceLoginCheckbox.Checked, Response.ClientDisconnectedToken); + this.Response.Redirect(redirectUri.AbsoluteUri); } } }
\ No newline at end of file diff --git a/samples/OAuthConsumer/Twitter.aspx.cs b/samples/OAuthConsumer/Twitter.aspx.cs index 6ff6993..6b298cc 100644 --- a/samples/OAuthConsumer/Twitter.aspx.cs +++ b/samples/OAuthConsumer/Twitter.aspx.cs @@ -3,6 +3,7 @@ using System.Collections.Generic; using System.Configuration; using System.Linq; + using System.Net; using System.Text; using System.Web; using System.Web.UI; @@ -14,51 +15,33 @@ using DotNetOpenAuth.OAuth; public partial class Twitter : System.Web.UI.Page { - private string AccessToken { - get { return (string)Session["TwitterAccessToken"]; } + private AccessToken AccessToken { + get { return (AccessToken)(Session["TwitterAccessToken"] ?? new AccessToken()); } set { Session["TwitterAccessToken"] = value; } } - private InMemoryTokenManager TokenManager { - get { - var tokenManager = (InMemoryTokenManager)Application["TwitterTokenManager"]; - if (tokenManager == null) { - string consumerKey = ConfigurationManager.AppSettings["twitterConsumerKey"]; - string consumerSecret = ConfigurationManager.AppSettings["twitterConsumerSecret"]; - if (!string.IsNullOrEmpty(consumerKey)) { - tokenManager = new InMemoryTokenManager(consumerKey, consumerSecret); - Application["TwitterTokenManager"] = tokenManager; - } - } - - return tokenManager; - } - } - protected async void Page_Load(object sender, EventArgs e) { - if (this.TokenManager != null) { + var twitter = new TwitterConsumer(); + if (twitter.ConsumerKey != null) { this.MultiView1.ActiveViewIndex = 1; if (!IsPostBack) { - var twitter = new WebConsumer(TwitterConsumer.ServiceDescription, this.TokenManager); - // Is Twitter calling back with authorization? - var accessTokenResponse = await twitter.ProcessUserAuthorizationAsync(new HttpRequestWrapper(Request), Response.ClientDisconnectedToken); + var accessTokenResponse = await twitter.ProcessUserAuthorizationAsync(this.Request.Url); if (accessTokenResponse != null) { this.AccessToken = accessTokenResponse.AccessToken; - } else if (this.AccessToken == null) { + } else { // If we don't yet have access, immediately request it. - var message = await twitter.PrepareRequestUserAuthorizationAsync(Response.ClientDisconnectedToken); - var response = await twitter.Channel.PrepareResponseAsync(message, Response.ClientDisconnectedToken); - await response.SendAsync(); + Uri redirectUri = await twitter.RequestUserAuthorizationAsync(MessagingUtilities.GetPublicFacingUrl()); + this.Response.Redirect(redirectUri.AbsoluteUri); } } } } protected async void downloadUpdates_Click(object sender, EventArgs e) { - var twitter = new WebConsumer(TwitterConsumer.ServiceDescription, this.TokenManager); - var statusesJson = await TwitterConsumer.GetUpdatesAsync(twitter, this.AccessToken, Response.ClientDisconnectedToken); + var twitter = new TwitterConsumer(); + var statusesJson = await twitter.GetUpdatesAsync(this.AccessToken); StringBuilder tableBuilder = new StringBuilder(); tableBuilder.Append("<table><tr><td>Name</td><td>Update</td></tr>"); @@ -83,13 +66,11 @@ return; } - var twitter = new WebConsumer(TwitterConsumer.ServiceDescription, this.TokenManager); - XDocument imageResult = await TwitterConsumer.UpdateProfileImageAsync( - twitter, + var twitter = new TwitterConsumer(); + XDocument imageResult = await twitter.UpdateProfileImageAsync( this.AccessToken, this.profilePhoto.PostedFile.InputStream, - this.profilePhoto.PostedFile.ContentType, - Response.ClientDisconnectedToken); + this.profilePhoto.PostedFile.ContentType); this.photoUploadedLabel.Visible = true; } } diff --git a/samples/OAuthConsumer/Web.config b/samples/OAuthConsumer/Web.config index 3580fe6..69dab78 100644 --- a/samples/OAuthConsumer/Web.config +++ b/samples/OAuthConsumer/Web.config @@ -37,8 +37,8 @@ <!-- Fill in your various consumer keys and secrets here to make the sample work. --> <!-- You must get these values by signing up with each individual service provider. --> <!-- Twitter sign-up: https://twitter.com/oauth_clients --> - <add key="twitterConsumerKey" value="" /> - <add key="twitterConsumerSecret" value="" /> + <add key="twitterConsumerKey" value="5ZxhT5fqIodtU8fa7mA0w" /> + <add key="twitterConsumerSecret" value="pZxtR63tLeMc8sd4rOqnZQqQjmfLiUMEWMokYFIjKq4" /> <!-- Google sign-up: https://www.google.com/accounts/ManageDomains --> <add key="googleConsumerKey" value="anonymous"/> <add key="googleConsumerSecret" value="anonymous"/> diff --git a/samples/OAuthConsumer/Yammer.aspx.cs b/samples/OAuthConsumer/Yammer.aspx.cs index 57169fc..b1031ae 100644 --- a/samples/OAuthConsumer/Yammer.aspx.cs +++ b/samples/OAuthConsumer/Yammer.aspx.cs @@ -11,48 +11,27 @@ using DotNetOpenAuth.OAuth; public partial class Yammer : System.Web.UI.Page { - private string RequestToken { - get { return (string)ViewState["YammerRequestToken"]; } - set { ViewState["YammerRequestToken"] = value; } - } - - private string AccessToken { - get { return (string)Session["YammerAccessToken"]; } + private AccessToken AccessToken { + get { return (AccessToken)Session["YammerAccessToken"]; } set { Session["YammerAccessToken"] = value; } } - private InMemoryTokenManager TokenManager { - get { - var tokenManager = (InMemoryTokenManager)Application["YammerTokenManager"]; - if (tokenManager == null) { - string consumerKey = ConfigurationManager.AppSettings["YammerConsumerKey"]; - string consumerSecret = ConfigurationManager.AppSettings["YammerConsumerSecret"]; - if (!string.IsNullOrEmpty(consumerKey)) { - tokenManager = new InMemoryTokenManager(consumerKey, consumerSecret); - Application["YammerTokenManager"] = tokenManager; - } - } - - return tokenManager; - } - } - protected void Page_Load(object sender, EventArgs e) { - if (this.TokenManager != null) { + var yammer = new YammerConsumer(); + if (yammer.ConsumerKey != null) { this.MultiView1.SetActiveView(this.BeginAuthorizationView); } } protected void getYammerMessages_Click(object sender, EventArgs e) { - var yammer = new WebConsumer(YammerConsumer.ServiceDescription, this.TokenManager); + var yammer = new YammerConsumer(); + + // TODO: code here } protected async void obtainAuthorizationButton_Click(object sender, EventArgs e) { - var yammer = YammerConsumer.CreateConsumer(this.TokenManager); - var tuple = await YammerConsumer.PrepareRequestAuthorizationAsync(yammer, Response.ClientDisconnectedToken); - Uri popupWindowLocation = tuple.Item1; - string requestToken = tuple.Item2; - this.RequestToken = requestToken; + var yammer = new YammerConsumer(); + Uri popupWindowLocation = await yammer.RequestUserAuthorizationAsync(MessagingUtilities.GetPublicFacingUrl()); string javascript = "window.open('" + popupWindowLocation.AbsoluteUri + "');"; this.Page.ClientScript.RegisterStartupScript(GetType(), "YammerPopup", javascript, true); this.MultiView1.SetActiveView(this.CompleteAuthorizationView); @@ -63,8 +42,8 @@ return; } - var yammer = YammerConsumer.CreateConsumer(this.TokenManager); - var authorizationResponse = await YammerConsumer.CompleteAuthorizationAsync(yammer, this.RequestToken, this.yammerUserCode.Text, Response.ClientDisconnectedToken); + var yammer = new YammerConsumer(); + var authorizationResponse = await yammer.ProcessUserAuthorizationAsync(this.yammerUserCode.Text); if (authorizationResponse != null) { this.accessTokenLabel.Text = HttpUtility.HtmlEncode(authorizationResponse.AccessToken); this.MultiView1.SetActiveView(this.AuthorizationCompleteView); |