public ActionResult OpenId(LoginViewModel model) { Identifier id; if (Identifier.TryParse(model.OpenID_Identifier, out id)) { try { var openId = new OpenIdRelyingParty(); var returnToUrl = new Uri(Url.Action("OpenIdCallback", "Admin", new {model.ReturnUrl }, Request.Url.Scheme), UriKind.Absolute); var request = openId.CreateRequest(id, Realm.AutoDetect, returnToUrl); // add request for name and email using sreg (OpenID Simple Registration Extension) request.AddExtension(new ClaimsRequest { Email = DemandLevel.Require, FullName = DemandLevel.Require, Nickname = DemandLevel.Require }); // also add AX request var axRequest = new FetchRequest(); axRequest.Attributes.AddRequired(WellKnownAttributes.Name.FullName); axRequest.Attributes.AddRequired(WellKnownAttributes.Name.First); axRequest.Attributes.AddRequired(WellKnownAttributes.Name.Last); axRequest.Attributes.AddRequired(WellKnownAttributes.Contact.Email); request.AddExtension(axRequest); return request.RedirectingResponse.AsActionResult(); } catch (ProtocolException ex) { model.Message = ex.Message; return View("Index", model); } } else { model.Message = "Invalid identifier"; return View("Index", model); } }
public ActionResult Facebook(LoginViewModel model) { var client = new FacebookClient { ClientIdentifier = "149468868470566", ClientSecret = "e6a0759c4c2510847763a1fb7d5b8566", }; IAuthorizationState authorization = client.ProcessUserAuthorization(); if (authorization == null) { // Kick off authorization request client.RequestUserAuthorization(); } else { var request = WebRequest.Create("https://graph.facebook.com/me?access_token=" + Uri.EscapeDataString(authorization.AccessToken)); using (var response = request.GetResponse()) { using (var responseStream = response.GetResponseStream()) { var graph = FacebookGraph.Deserialize(responseStream); var userData = new UserData { FriendlyName = graph.Name, Identifier = graph.Link.ToString(), LoginProvider = "Facebook" }; SetAuthCookie(graph.Link.ToString(), true, JsonConvert.SerializeObject(userData)); return Redirect(Url.Action("Index", "Home")); } } } return Redirect(Url.Action("Index", "Home")); }
public ActionResult OpenIdCallback(string returnUrl) { var model = new LoginViewModel { ReturnUrl = returnUrl }; var openId = new OpenIdRelyingParty(); var openIdResponse = openId.GetResponse(); if (openIdResponse.Status == AuthenticationStatus.Authenticated) { var email = GetEmail(openIdResponse); var userData = new UserData { FriendlyName = GetFriendlyName(openIdResponse), Identifier = email, Email = email, LoginProvider = "Google" }; SetAuthCookie(openIdResponse.ClaimedIdentifier, true, JsonConvert.SerializeObject(userData)); return Redirect(Url.Action("Index", "Home")); } model.Message = "Sorry, login failed."; return View("Index", model); }