summaryrefslogtreecommitdiffstats
path: root/samples/OAuthConsumer/SampleWcf.aspx.cs
diff options
context:
space:
mode:
Diffstat (limited to 'samples/OAuthConsumer/SampleWcf.aspx.cs')
-rw-r--r--samples/OAuthConsumer/SampleWcf.aspx.cs50
1 files changed, 19 insertions, 31 deletions
diff --git a/samples/OAuthConsumer/SampleWcf.aspx.cs b/samples/OAuthConsumer/SampleWcf.aspx.cs
index 9c32f59..7ea5f62 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.RedirectLocation = 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;
}