private Uri GetServiceLoginUrl(Uri returnUrl) { UriBuilder builder = new UriBuilder(this.AuthorizationEndpoint); StringBuilder queryStringBuilder = new StringBuilder(); UriUtilities.AppendQueryStringArgument(queryStringBuilder, "client_id", this.AppID); var state = System.Convert.ToBase64String(System.Text.ASCIIEncoding.ASCII.GetBytes(returnUrl.Query)); UriUtilities.AppendQueryStringArgument(queryStringBuilder, "state", state); UriUtilities.AppendQueryStringArgument(queryStringBuilder, "scope", "profile"); UriUtilities.AppendQueryStringArgument(queryStringBuilder, "response_type", "code"); UriUtilities.AppendQueryStringArgument(queryStringBuilder, "redirect_uri", returnUrl.GetLeftPart(UriPartial.Path)); builder.Query = queryStringBuilder.ToString(); return(builder.Uri); }
public AuthenticationResult VerifyAuthentication(HttpContextBase context) { try { var code = context.Request.QueryString["code"]; var accessToken = this.QueryAccessToken(UriUtilities.ConvertToAbsoluteUri(context.Request.RawUrl, context), code); var result = this.GetCustomerProfile(accessToken); AuthenticationResult authenticationResult = new AuthenticationResult(true, this.ProviderName, result["user_id"], result["name"], result); return(authenticationResult); } catch (Exception ex) { AuthenticationResult authenticationResult = new AuthenticationResult(ex); return(authenticationResult); } }
private Dictionary <string, string> GetCustomerProfile(string accessToken) { UriBuilder builder = new UriBuilder(this.ProfileEndpoint); StringBuilder queryStringBuilder = new StringBuilder(); UriUtilities.AppendQueryStringArgument(queryStringBuilder, "access_token", accessToken); builder.Query = queryStringBuilder.ToString(); Dictionary <string, string> result = new Dictionary <string, string>(); using (WebClient webClient = new WebClient()) { string response = webClient.DownloadString(builder.Uri); JavaScriptSerializer serializer = new JavaScriptSerializer(); result = serializer.Deserialize <Dictionary <string, string> >(response); } return(result); }