summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--samples/DotNetOpenAuth.ApplicationBlock/TwitterConsumer.cs2
-rw-r--r--samples/OAuthConsumer/GoogleAddressBook.aspx2
-rw-r--r--samples/OAuthConsumer/GoogleAddressBook.aspx.cs10
-rw-r--r--samples/OAuthConsumer/GoogleApps2Legged.aspx2
-rw-r--r--samples/OAuthConsumer/GoogleApps2Legged.aspx.cs9
-rw-r--r--samples/OAuthConsumer/SampleWcf.aspx2
-rw-r--r--samples/OAuthConsumer/SampleWcf.aspx.cs31
-rw-r--r--samples/OAuthConsumer/SignInWithTwitter.aspx2
-rw-r--r--samples/OAuthConsumer/SignInWithTwitter.aspx.cs15
-rw-r--r--samples/OAuthConsumer/Twitter.aspx2
-rw-r--r--samples/OAuthConsumer/Twitter.aspx.cs21
-rw-r--r--samples/OAuthConsumer/Yammer.aspx.cs11
-rw-r--r--samples/OAuthServiceProvider/Members/Authorize.aspx2
-rw-r--r--samples/OAuthServiceProvider/Members/Authorize.aspx.cs7
-rw-r--r--samples/OAuthServiceProvider/OAuthServiceProvider.csproj2
-rw-r--r--samples/OAuthServiceProvider/packages.config1
16 files changed, 71 insertions, 50 deletions
diff --git a/samples/DotNetOpenAuth.ApplicationBlock/TwitterConsumer.cs b/samples/DotNetOpenAuth.ApplicationBlock/TwitterConsumer.cs
index 9cbedb6..455ccf3 100644
--- a/samples/DotNetOpenAuth.ApplicationBlock/TwitterConsumer.cs
+++ b/samples/DotNetOpenAuth.ApplicationBlock/TwitterConsumer.cs
@@ -216,7 +216,7 @@ namespace DotNetOpenAuth.ApplicationBlock {
/// <c>return StartSignInWithTwitter().<see cref="MessagingUtilities.AsActionResult">AsActionResult()</see></c>
/// to actually perform the redirect.
/// </remarks>
- public static async Task<HttpResponseMessage> StartSignInWithTwitterAsync(bool forceNewLogin, CancellationToken cancellationToken) {
+ public static async Task<HttpResponseMessage> StartSignInWithTwitterAsync(bool forceNewLogin = false, CancellationToken cancellationToken = default(CancellationToken)) {
var redirectParameters = new Dictionary<string, string>();
if (forceNewLogin) {
redirectParameters["force_login"] = "true";
diff --git a/samples/OAuthConsumer/GoogleAddressBook.aspx b/samples/OAuthConsumer/GoogleAddressBook.aspx
index 19fb505..b4d6a01 100644
--- a/samples/OAuthConsumer/GoogleAddressBook.aspx
+++ b/samples/OAuthConsumer/GoogleAddressBook.aspx
@@ -1,4 +1,4 @@
-<%@ Page Title="Gmail address book demo" Language="C#" MasterPageFile="~/MasterPage.master"
+<%@ Page Title="Gmail address book demo" Language="C#" MasterPageFile="~/MasterPage.master" Async="true"
AutoEventWireup="true" Inherits="OAuthConsumer.GoogleAddressBook" Codebehind="GoogleAddressBook.aspx.cs" %>
<asp:Content ID="Content2" ContentPlaceHolderID="Body" runat="Server">
diff --git a/samples/OAuthConsumer/GoogleAddressBook.aspx.cs b/samples/OAuthConsumer/GoogleAddressBook.aspx.cs
index ddca7e4..8a2a816 100644
--- a/samples/OAuthConsumer/GoogleAddressBook.aspx.cs
+++ b/samples/OAuthConsumer/GoogleAddressBook.aspx.cs
@@ -35,7 +35,7 @@
}
}
- protected void Page_Load(object sender, EventArgs e) {
+ protected async void Page_Load(object sender, EventArgs e) {
if (this.TokenManager != null) {
this.MultiView1.ActiveViewIndex = 1;
@@ -43,21 +43,21 @@
var google = new WebConsumer(GoogleConsumer.ServiceDescription, this.TokenManager);
// Is Google calling back with authorization?
- var accessTokenResponse = google.ProcessUserAuthorization();
+ var accessTokenResponse = await google.ProcessUserAuthorizationAsync(new HttpRequestWrapper(Request), Response.ClientDisconnectedToken);
if (accessTokenResponse != null) {
this.AccessToken = accessTokenResponse.AccessToken;
} else if (this.AccessToken == null) {
// If we don't yet have access, immediately request it.
- GoogleConsumer.RequestAuthorization(google, GoogleConsumer.Applications.Contacts);
+ await GoogleConsumer.RequestAuthorizationAsync(google, GoogleConsumer.Applications.Contacts);
}
}
}
}
- protected void getAddressBookButton_Click(object sender, EventArgs e) {
+ protected async void getAddressBookButton_Click(object sender, EventArgs e) {
var google = new WebConsumer(GoogleConsumer.ServiceDescription, this.TokenManager);
- XDocument contactsDocument = GoogleConsumer.GetContacts(google, this.AccessToken, 5, 1);
+ XDocument contactsDocument = await GoogleConsumer.GetContactsAsync(google, 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 b/samples/OAuthConsumer/GoogleApps2Legged.aspx
index cd9d9a1..44f0ce2 100644
--- a/samples/OAuthConsumer/GoogleApps2Legged.aspx
+++ b/samples/OAuthConsumer/GoogleApps2Legged.aspx
@@ -1,4 +1,4 @@
-<%@ Page Language="C#" AutoEventWireup="true" MasterPageFile="~/MasterPage.master"CodeBehind="GoogleApps2Legged.aspx.cs" Inherits="OAuthConsumer.GoogleApps2Legged" %>
+<%@ Page Language="C#" AutoEventWireup="true" MasterPageFile="~/MasterPage.master"CodeBehind="GoogleApps2Legged.aspx.cs" Inherits="OAuthConsumer.GoogleApps2Legged" Async="true" %>
<asp:Content ID="Content2" ContentPlaceHolderID="Body" runat="Server">
<asp:MultiView ID="MultiView1" runat="server" ActiveViewIndex="0">
diff --git a/samples/OAuthConsumer/GoogleApps2Legged.aspx.cs b/samples/OAuthConsumer/GoogleApps2Legged.aspx.cs
index afb156b..2dfa8a2 100644
--- a/samples/OAuthConsumer/GoogleApps2Legged.aspx.cs
+++ b/samples/OAuthConsumer/GoogleApps2Legged.aspx.cs
@@ -28,12 +28,15 @@
}
}
- protected void Page_Load(object sender, EventArgs e) {
+ protected async void Page_Load(object sender, EventArgs e) {
var google = new WebConsumer(GoogleConsumer.ServiceDescription, this.TokenManager);
- string accessToken = google.RequestNewClientAccount();
+ string accessToken = await google.RequestNewClientAccountAsync(cancellationToken: Response.ClientDisconnectedToken);
////string tokenSecret = google.TokenManager.GetTokenSecret(accessToken);
MessageReceivingEndpoint ep = null; // set up your authorized call here.
- google.PrepareAuthorizedRequestAndSend(ep, accessToken);
+ var request = await google.PrepareAuthorizedRequestAsync(ep, accessToken, Response.ClientDisconnectedToken);
+ using (var httpClient = google.Channel.HostFactories.CreateHttpClient()) {
+ await httpClient.SendAsync(request);
+ }
}
}
} \ No newline at end of file
diff --git a/samples/OAuthConsumer/SampleWcf.aspx b/samples/OAuthConsumer/SampleWcf.aspx
index fb318ce..a44ffa4 100644
--- a/samples/OAuthConsumer/SampleWcf.aspx
+++ b/samples/OAuthConsumer/SampleWcf.aspx
@@ -1,4 +1,4 @@
-<%@ Page Title="" Language="C#" MasterPageFile="~/MasterPage.master" AutoEventWireup="true" Inherits="OAuthConsumer.SampleWcf" Codebehind="SampleWcf.aspx.cs" %>
+<%@ Page Title="" Language="C#" MasterPageFile="~/MasterPage.master" AutoEventWireup="true" Inherits="OAuthConsumer.SampleWcf" Codebehind="SampleWcf.aspx.cs" Async="true" %>
<asp:Content ID="Content2" ContentPlaceHolderID="Body" runat="Server">
<fieldset title="Authorization">
diff --git a/samples/OAuthConsumer/SampleWcf.aspx.cs b/samples/OAuthConsumer/SampleWcf.aspx.cs
index d56a161..d0f69f8 100644
--- a/samples/OAuthConsumer/SampleWcf.aspx.cs
+++ b/samples/OAuthConsumer/SampleWcf.aspx.cs
@@ -7,6 +7,8 @@
using System.ServiceModel;
using System.ServiceModel.Channels;
using System.ServiceModel.Security;
+ using System.Threading.Tasks;
+ using System.Web;
using System.Web.UI.WebControls;
using DotNetOpenAuth;
using DotNetOpenAuth.ApplicationBlock;
@@ -19,11 +21,11 @@
/// Sample consumer of our Service Provider sample's WCF service.
/// </summary>
public partial class SampleWcf : System.Web.UI.Page {
- protected void Page_Load(object sender, EventArgs e) {
+ protected async void Page_Load(object sender, EventArgs e) {
if (!IsPostBack) {
if (Session["WcfTokenManager"] != null) {
WebConsumer consumer = this.CreateConsumer();
- var accessTokenMessage = consumer.ProcessUserAuthorization();
+ var accessTokenMessage = await consumer.ProcessUserAuthorizationAsync(new HttpRequestWrapper(Request), Response.ClientDisconnectedToken);
if (accessTokenMessage != null) {
Session["WcfAccessToken"] = accessTokenMessage.AccessToken;
this.authorizationLabel.Text = "Authorized! Access token: " + accessTokenMessage.AccessToken;
@@ -32,7 +34,7 @@
}
}
- protected void getAuthorizationButton_Click(object sender, EventArgs e) {
+ protected async void getAuthorizationButton_Click(object sender, EventArgs e) {
WebConsumer consumer = this.CreateConsumer();
UriBuilder callback = new UriBuilder(Request.Url);
callback.Query = null;
@@ -43,37 +45,38 @@
var requestParams = new Dictionary<string, string> {
{ "scope", scope },
};
- var response = consumer.PrepareRequestUserAuthorization(callback.Uri, requestParams, null);
- consumer.Channel.Send(response);
+ 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);
}
- protected void getNameButton_Click(object sender, EventArgs e) {
+ protected async void getNameButton_Click(object sender, EventArgs e) {
try {
- this.nameLabel.Text = this.CallService(client => client.GetName());
+ this.nameLabel.Text = await this.CallServiceAsync(client => client.GetName());
} catch (SecurityAccessDeniedException) {
this.nameLabel.Text = "Access denied!";
}
}
- protected void getAgeButton_Click(object sender, EventArgs e) {
+ protected async void getAgeButton_Click(object sender, EventArgs e) {
try {
- int? age = this.CallService(client => client.GetAge());
+ int? age = await this.CallServiceAsync(client => client.GetAge());
this.ageLabel.Text = age.HasValue ? age.Value.ToString(CultureInfo.CurrentCulture) : "not available";
} catch (SecurityAccessDeniedException) {
this.ageLabel.Text = "Access denied!";
}
}
- protected void getFavoriteSites_Click(object sender, EventArgs e) {
+ protected async void getFavoriteSites_Click(object sender, EventArgs e) {
try {
- string[] favoriteSites = this.CallService(client => client.GetFavoriteSites());
+ string[] favoriteSites = await this.CallServiceAsync(client => client.GetFavoriteSites());
this.favoriteSitesLabel.Text = string.Join(", ", favoriteSites);
} catch (SecurityAccessDeniedException) {
this.favoriteSitesLabel.Text = "Access denied!";
}
}
- private T CallService<T>(Func<DataApiClient, T> predicate) {
+ 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;
@@ -81,10 +84,10 @@
throw new InvalidOperationException("No access token!");
}
WebConsumer consumer = this.CreateConsumer();
- WebRequest httpRequest = consumer.PrepareAuthorizedRequest(serviceEndpoint, accessToken);
+ var httpRequest = await consumer.PrepareAuthorizedRequestAsync(serviceEndpoint, accessToken, Response.ClientDisconnectedToken);
HttpRequestMessageProperty httpDetails = new HttpRequestMessageProperty();
- httpDetails.Headers[HttpRequestHeader.Authorization] = httpRequest.Headers[HttpRequestHeader.Authorization];
+ httpDetails.Headers[HttpRequestHeader.Authorization] = httpRequest.Headers.Authorization.ToString();
using (OperationContextScope scope = new OperationContextScope(client.InnerChannel)) {
OperationContext.Current.OutgoingMessageProperties[HttpRequestMessageProperty.Name] = httpDetails;
return predicate(client);
diff --git a/samples/OAuthConsumer/SignInWithTwitter.aspx b/samples/OAuthConsumer/SignInWithTwitter.aspx
index 86d29a4..e5ccc97 100644
--- a/samples/OAuthConsumer/SignInWithTwitter.aspx
+++ b/samples/OAuthConsumer/SignInWithTwitter.aspx
@@ -1,4 +1,4 @@
-<%@ Page Language="C#" AutoEventWireup="true"
+<%@ Page Language="C#" AutoEventWireup="true" Async="true"
Inherits="OAuthConsumer.SignInWithTwitter" Codebehind="SignInWithTwitter.aspx.cs" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
diff --git a/samples/OAuthConsumer/SignInWithTwitter.aspx.cs b/samples/OAuthConsumer/SignInWithTwitter.aspx.cs
index e104f3a..b9d19ef 100644
--- a/samples/OAuthConsumer/SignInWithTwitter.aspx.cs
+++ b/samples/OAuthConsumer/SignInWithTwitter.aspx.cs
@@ -9,18 +9,20 @@
using System.Web.UI.WebControls;
using System.Xml.Linq;
using System.Xml.XPath;
+ using DotNetOpenAuth.Messaging;
using DotNetOpenAuth.ApplicationBlock;
using DotNetOpenAuth.OAuth;
public partial class SignInWithTwitter : System.Web.UI.Page {
- protected void Page_Load(object sender, EventArgs e) {
+ protected async void Page_Load(object sender, EventArgs e) {
if (TwitterConsumer.IsTwitterConsumerConfigured) {
this.MultiView1.ActiveViewIndex = 1;
if (!IsPostBack) {
- string screenName;
- int userId;
- if (TwitterConsumer.TryFinishSignInWithTwitter(out screenName, out userId)) {
+ var tuple = await TwitterConsumer.TryFinishSignInWithTwitterAsync(Response.ClientDisconnectedToken);
+ if (tuple != null) {
+ string screenName = tuple.Item1;
+ int userId = tuple.Item2;
this.loggedInPanel.Visible = true;
this.loggedInName.Text = screenName;
@@ -32,8 +34,9 @@
}
}
- protected void signInButton_Click(object sender, ImageClickEventArgs e) {
- TwitterConsumer.StartSignInWithTwitter(this.forceLoginCheckbox.Checked).Send();
+ protected async void signInButton_Click(object sender, ImageClickEventArgs e) {
+ var response = await TwitterConsumer.StartSignInWithTwitterAsync(this.forceLoginCheckbox.Checked, Response.ClientDisconnectedToken);
+ await response.SendAsync();
}
}
} \ No newline at end of file
diff --git a/samples/OAuthConsumer/Twitter.aspx b/samples/OAuthConsumer/Twitter.aspx
index a24c7bd..cf81a12 100644
--- a/samples/OAuthConsumer/Twitter.aspx
+++ b/samples/OAuthConsumer/Twitter.aspx
@@ -1,4 +1,4 @@
-<%@ Page Title="" Language="C#" MasterPageFile="~/MasterPage.master" AutoEventWireup="true" Inherits="OAuthConsumer.Twitter" Codebehind="Twitter.aspx.cs" %>
+<%@ Page Title="" Language="C#" MasterPageFile="~/MasterPage.master" AutoEventWireup="true" Inherits="OAuthConsumer.Twitter" Codebehind="Twitter.aspx.cs" Async="true" %>
<asp:Content ID="Content1" ContentPlaceHolderID="head" runat="Server">
</asp:Content>
diff --git a/samples/OAuthConsumer/Twitter.aspx.cs b/samples/OAuthConsumer/Twitter.aspx.cs
index 8288ed0..f418fed 100644
--- a/samples/OAuthConsumer/Twitter.aspx.cs
+++ b/samples/OAuthConsumer/Twitter.aspx.cs
@@ -12,6 +12,8 @@
using DotNetOpenAuth.ApplicationBlock;
using DotNetOpenAuth.OAuth;
+ using DotNetOpenAuth.Messaging;
+
public partial class Twitter : System.Web.UI.Page {
private string AccessToken {
get { return (string)Session["TwitterAccessToken"]; }
@@ -34,7 +36,7 @@
}
}
- protected void Page_Load(object sender, EventArgs e) {
+ protected async void Page_Load(object sender, EventArgs e) {
if (this.TokenManager != null) {
this.MultiView1.ActiveViewIndex = 1;
@@ -42,20 +44,22 @@
var twitter = new WebConsumer(TwitterConsumer.ServiceDescription, this.TokenManager);
// Is Twitter calling back with authorization?
- var accessTokenResponse = twitter.ProcessUserAuthorization();
+ var accessTokenResponse = await twitter.ProcessUserAuthorizationAsync(new HttpRequestWrapper(Request), Response.ClientDisconnectedToken);
if (accessTokenResponse != null) {
this.AccessToken = accessTokenResponse.AccessToken;
} else if (this.AccessToken == null) {
// If we don't yet have access, immediately request it.
- twitter.Channel.Send(twitter.PrepareRequestUserAuthorization());
+ var message = await twitter.PrepareRequestUserAuthorizationAsync(Response.ClientDisconnectedToken);
+ var response = await twitter.Channel.PrepareResponseAsync(message, Response.ClientDisconnectedToken);
+ await response.SendAsync();
}
}
}
}
- protected void downloadUpdates_Click(object sender, EventArgs e) {
+ protected async void downloadUpdates_Click(object sender, EventArgs e) {
var twitter = new WebConsumer(TwitterConsumer.ServiceDescription, this.TokenManager);
- XPathDocument updates = new XPathDocument(TwitterConsumer.GetUpdates(twitter, this.AccessToken).CreateReader());
+ XPathDocument updates = new XPathDocument((await TwitterConsumer.GetUpdatesAsync(twitter, this.AccessToken, Response.ClientDisconnectedToken)).CreateReader());
XPathNavigator nav = updates.CreateNavigator();
var parsedUpdates = from status in nav.Select("/statuses/status").OfType<XPathNavigator>()
where !status.SelectSingleNode("user/protected").ValueAsBoolean
@@ -77,7 +81,7 @@
this.resultsPlaceholder.Controls.Add(new Literal { Text = tableBuilder.ToString() });
}
- protected void uploadProfilePhotoButton_Click(object sender, EventArgs e) {
+ protected async void uploadProfilePhotoButton_Click(object sender, EventArgs e) {
if (this.profilePhoto.PostedFile.ContentType == null) {
this.photoUploadedLabel.Visible = true;
this.photoUploadedLabel.Text = "Select a file first.";
@@ -85,11 +89,12 @@
}
var twitter = new WebConsumer(TwitterConsumer.ServiceDescription, this.TokenManager);
- XDocument imageResult = TwitterConsumer.UpdateProfileImage(
+ XDocument imageResult = await TwitterConsumer.UpdateProfileImageAsync(
twitter,
this.AccessToken,
this.profilePhoto.PostedFile.InputStream,
- this.profilePhoto.PostedFile.ContentType);
+ this.profilePhoto.PostedFile.ContentType,
+ Response.ClientDisconnectedToken);
this.photoUploadedLabel.Visible = true;
}
}
diff --git a/samples/OAuthConsumer/Yammer.aspx.cs b/samples/OAuthConsumer/Yammer.aspx.cs
index d8993fe..57169fc 100644
--- a/samples/OAuthConsumer/Yammer.aspx.cs
+++ b/samples/OAuthConsumer/Yammer.aspx.cs
@@ -47,23 +47,24 @@
var yammer = new WebConsumer(YammerConsumer.ServiceDescription, this.TokenManager);
}
- protected void obtainAuthorizationButton_Click(object sender, EventArgs e) {
+ protected async void obtainAuthorizationButton_Click(object sender, EventArgs e) {
var yammer = YammerConsumer.CreateConsumer(this.TokenManager);
- string requestToken;
- Uri popupWindowLocation = YammerConsumer.PrepareRequestAuthorization(yammer, out requestToken);
+ var tuple = await YammerConsumer.PrepareRequestAuthorizationAsync(yammer, Response.ClientDisconnectedToken);
+ Uri popupWindowLocation = tuple.Item1;
+ string requestToken = tuple.Item2;
this.RequestToken = requestToken;
string javascript = "window.open('" + popupWindowLocation.AbsoluteUri + "');";
this.Page.ClientScript.RegisterStartupScript(GetType(), "YammerPopup", javascript, true);
this.MultiView1.SetActiveView(this.CompleteAuthorizationView);
}
- protected void finishAuthorizationButton_Click(object sender, EventArgs e) {
+ protected async void finishAuthorizationButton_Click(object sender, EventArgs e) {
if (!Page.IsValid) {
return;
}
var yammer = YammerConsumer.CreateConsumer(this.TokenManager);
- var authorizationResponse = YammerConsumer.CompleteAuthorization(yammer, this.RequestToken, this.yammerUserCode.Text);
+ var authorizationResponse = await YammerConsumer.CompleteAuthorizationAsync(yammer, this.RequestToken, this.yammerUserCode.Text, Response.ClientDisconnectedToken);
if (authorizationResponse != null) {
this.accessTokenLabel.Text = HttpUtility.HtmlEncode(authorizationResponse.AccessToken);
this.MultiView1.SetActiveView(this.AuthorizationCompleteView);
diff --git a/samples/OAuthServiceProvider/Members/Authorize.aspx b/samples/OAuthServiceProvider/Members/Authorize.aspx
index b3e2c6a..e7be651 100644
--- a/samples/OAuthServiceProvider/Members/Authorize.aspx
+++ b/samples/OAuthServiceProvider/Members/Authorize.aspx
@@ -1,4 +1,4 @@
-<%@ Page Title="" Language="C#" MasterPageFile="~/MasterPage.master" AutoEventWireup="true" Inherits="OAuthServiceProvider.Authorize" Codebehind="Authorize.aspx.cs" %>
+<%@ Page Title="" Language="C#" MasterPageFile="~/MasterPage.master" AutoEventWireup="true" Inherits="OAuthServiceProvider.Authorize" Codebehind="Authorize.aspx.cs" Async="true" %>
<asp:Content ID="Content2" ContentPlaceHolderID="Body" runat="Server">
<asp:MultiView runat="server" ActiveViewIndex="0" ID="multiView">
diff --git a/samples/OAuthServiceProvider/Members/Authorize.aspx.cs b/samples/OAuthServiceProvider/Members/Authorize.aspx.cs
index faa2147..822d6d0 100644
--- a/samples/OAuthServiceProvider/Members/Authorize.aspx.cs
+++ b/samples/OAuthServiceProvider/Members/Authorize.aspx.cs
@@ -11,6 +11,8 @@
using DotNetOpenAuth.OAuth.Messages;
using OAuthServiceProvider.Code;
+ using DotNetOpenAuth.Messaging;
+
/// <summary>
/// Conducts the user through a Consumer authorization process.
/// </summary>
@@ -45,7 +47,7 @@
}
}
- protected void allowAccessButton_Click(object sender, EventArgs e) {
+ protected async void allowAccessButton_Click(object sender, EventArgs e) {
if (this.AuthorizationSecret != this.OAuthAuthorizationSecToken.Value) {
throw new ArgumentException(); // probably someone trying to hack in.
}
@@ -57,7 +59,8 @@
ServiceProvider sp = new ServiceProvider(Constants.SelfDescription, Global.TokenManager);
var response = sp.PrepareAuthorizationResponse(pending);
if (response != null) {
- sp.Channel.Send(response);
+ var responseMessage = await sp.Channel.PrepareResponseAsync(response, Response.ClientDisconnectedToken);
+ await responseMessage.SendAsync();
} else {
if (pending.IsUnsafeRequest) {
this.verifierMultiView.ActiveViewIndex = 1;
diff --git a/samples/OAuthServiceProvider/OAuthServiceProvider.csproj b/samples/OAuthServiceProvider/OAuthServiceProvider.csproj
index 5419347..2be5873 100644
--- a/samples/OAuthServiceProvider/OAuthServiceProvider.csproj
+++ b/samples/OAuthServiceProvider/OAuthServiceProvider.csproj
@@ -54,6 +54,8 @@
<Reference Include="System.Data.DataSetExtensions" />
<Reference Include="System.Data.Linq" />
<Reference Include="System.IdentityModel" />
+ <Reference Include="System.Net.Http" />
+ <Reference Include="System.Net.Http.WebRequest" />
<Reference Include="System.ServiceModel" />
<Reference Include="System.Web.ApplicationServices" />
<Reference Include="System.Web.DynamicData" />
diff --git a/samples/OAuthServiceProvider/packages.config b/samples/OAuthServiceProvider/packages.config
index 6562527..8e40260 100644
--- a/samples/OAuthServiceProvider/packages.config
+++ b/samples/OAuthServiceProvider/packages.config
@@ -1,4 +1,5 @@
<?xml version="1.0" encoding="utf-8"?>
<packages>
<package id="log4net" version="2.0.0" targetFramework="net45" />
+ <package id="Microsoft.Net.Http" version="2.0.20710.0" targetFramework="net45" />
</packages> \ No newline at end of file