public UserAccount(FacebookAccessToken token) : this() { FacebookId = token.FacebookID; InsertedDateTime = DateTime.UtcNow; LastModifiedDateTime = DateTime.UtcNow; Update(token); }
public IHttpActionResult Post([FromBody] FacebookAccessToken token) { if (_facebookApi.IsFacebookUserTokenValid(token.AccessToken, token.UserId)) { var loginResponse = DoLogin(token); return(Ok(loginResponse)); } return(Unauthorized()); }
public virtual void Update(FacebookAccessToken token) { if (!token.Name.IsNullOrWhiteSpace()) { Name = token.Name.Trim(); LastModifiedDateTime = DateTime.UtcNow; } if (!token.Email.IsNullOrWhiteSpace()) { Email = token.Email.Trim(); LastModifiedDateTime = DateTime.UtcNow; } }
private LoginResponse DoLogin(FacebookAccessToken token) { var existingUser = _context.Users.FirstOrDefault(x => x.FacebookUserId == token.UserId); if (existingUser != null) { existingUser.LastFacebookToken = existingUser.Token; existingUser.Token = token.AccessToken; } else { existingUser = new User { UserType = _context.UserTypes.FirstOrDefault(x => x.Id == UserType.FacebookUser), FacebookUserId = token.UserId, Email = token.Email, First = token.FirstName, Last = token.LastName, IsEmailVerified = true, Token = token.AccessToken }; _context.Users.Add(existingUser); } _sessionProvider.SetSessionUser(new SessionUser(existingUser)); var userSession = new UserSession { IsSessionOpen = true, SessionStarted = DateTime.Now, SessionToken = _sessionProvider.GetSessionToken(), User = existingUser }; _context.UserSessions.Add(userSession); _context.SaveChanges(); return(new LoginResponse { SessionToken = _sessionProvider.GetSessionToken(), User = Map(existingUser) }); }
private void GetAuthInfo(string code) { FacebookAccessToken accessTokenInfo = GetAccessTokenInfo(code); Response.Write(accessTokenInfo.access_token); }
public ActionResult FacebookCallback(string code) { try { Debugger.Launch(); var facebookClient = new FacebookClient(); dynamic result = facebookClient.Post("oauth/access_token", new { client_id = FacebookSettings.ClientId, client_secret = FacebookSettings.ClientSecret, redirect_uri = RedirectUri.AbsoluteUri, code }); facebookClient.AccessToken = result.access_token; // Get the user's information dynamic userInfo = facebookClient.Get("me?fields=first_name,last_name,id,email"); string userId = userInfo.id; var userModelExits = WebUow.Instance.RepoOf <Users>() .Get(q => q.facebookid == userId).SingleOrDefault(); if (userModelExits == null) { userModelExits = new Users { name = userInfo.first_name, facebookid = userInfo.id, email = userInfo.email, datecreated = DateTime.Now, lastlogin = DateTime.Now }; WebUow.Instance.RepoOf <Users>().Add(userModelExits, true); var facebooktemptoken = new FacebookAccessToken { Fuserid = userInfo.id, accesstoken = facebookClient.AccessToken, userid = userModelExits.Id, generatedon = DateTime.Now }; WebUow.Instance.RepoOf <FacebookAccessToken>().Add(facebooktemptoken, true); } else { userModelExits.lastlogin = DateTime.Now; WebUow.Instance.RepoOf <Users>().Update(userModelExits, true); } var ticket = new FormsAuthenticationTicket(1, userInfo.id, DateTime.Now, DateTime.Now.AddDays(360), true, userModelExits.Id.ToString(), FormsAuthentication.FormsCookiePath); // Encrypt the ticket. var encTicket = FormsAuthentication.Encrypt(ticket); var nawaz = new HttpCookie(FormsAuthentication.FormsCookieName) { Value = encTicket, Expires = DateTime.Now.AddDays(360) //Secure = true, //HttpOnly = true }; ControllerContext.HttpContext.Response.Cookies.Add(nawaz); var token = WebUow.Instance.RepoOf <FacebookAccessToken>() .Get(q => q.Fuserid == userId) .SingleOrDefault() ?? new FacebookAccessToken(); var facebookClient1 = new FacebookClient(); dynamic result1 = facebookClient1.Post("oauth/access_token", new { grant_type = "fb_exchange_token", client_id = FacebookSettings.ClientId, client_secret = FacebookSettings.ClientSecret, fb_exchange_token = facebookClient.AccessToken }); token.accesstoken = result1.access_token; token.expiry = int.Parse(result1.expires.ToString()); token.generatedon = DateTime.Now; token.Fuserid = userInfo.id; token.userid = userModelExits.Id; WebUow.Instance.RepoOf <FacebookAccessToken>().Update(token, true); return(RedirectToAction("Index", "Home")); } catch (Exception ex) { if (User.Identity.IsAuthenticated) { FormsAuthentication.SignOut(); } ViewBag.Error = ex.Message; return(View("Error")); } }
public static FacebookAccessToken ExchangeAccessTokenDuration(string applicationId, string secretKey, string accessToken) { FacebookAccessToken result = null; Uri requestUri = new Uri(string.Format(ExtendAccessTokenURL, applicationId, secretKey, accessToken)); try { WebRequest request = WebRequest.Create(requestUri); WebResponse response = request.GetResponse(); using (StreamReader read = new StreamReader(response.GetResponseStream())) { string responseText = read.ReadToEnd(); string[] data = responseText.Split('&'); if (data != null && data.Length == 2) { string[] token = data[0].Split('='); string[] expires = data[1].Split('='); if (token != null && token.Length == 2 && expires != null && expires.Length == 2) { int exp; int.TryParse(expires[1], out exp); result = new FacebookAccessToken(); result.AccessToken = token[1]; result.Expires = DateTime.UtcNow.AddSeconds(exp); // handling the Facebook bug that causes the expires value to start from instead of January 1st 1970 :p if (result.Expires < DateTime.UtcNow) { result.Expires = DateTime.UtcNow.AddSeconds(exp); } } } } } catch (WebException e) { if (e.Response != null) { using (StreamReader read = new StreamReader(e.Response.GetResponseStream())) { string responseText = read.ReadToEnd(); read.Close(); Logger.Current.Error("Authentication.ExchangeAccessTokenDuration", responseText); } } } catch (Exception e) { Logger.Current.Error("Authentication.ExchangeAccessTokenDuration", e.Message, e); } return(result); }