private async Task <IActionResult> RegisterFacebook(RegisterModel model, FacebookUserModel facebookUserModel) { var userExists = await userManager.FindByNameAsync(model.Username); if (userExists != null) { return(StatusCode(StatusCodes.Status409Conflict)); } var user = new ApplicationUser { Email = model.Email, SecurityStamp = Guid.NewGuid().ToString(), UserName = model.Username }; var result = await userManager.CreateAsync(user); if (!result.Succeeded) { return(StatusCode(StatusCodes.Status409Conflict)); } if (!await roleManager.RoleExistsAsync(UserRoles.User)) { await roleManager.CreateAsync(new IdentityRole(UserRoles.User)); } if (await roleManager.RoleExistsAsync(UserRoles.User)) { await userManager.AddToRoleAsync(user, UserRoles.User); } await AddNewStudent(user.Email, user.UserName); return(StatusCode(StatusCodes.Status200OK)); }
public async Task <ActionResult> Facebook(string code) { //CheckAuthorisation(code); ViewBag.Message = "Your Facebook page."; var fbm = new FacebookUserModel() { Name = User.Identity.Name }; fbm.Friends = new List <FriendModel>() { new FriendModel() { Name = "Neil", Profile = "" }, new FriendModel() { Name = "Fred", Profile = "" } }; fbm = GetData(Session["access_token"] as Claim, User.Identity); return(View(fbm)); }
public async Task <object> GetBy(FacebookUserModel parameters) { var isMobile = await Uow.Repository <FacebookUser>().SingleOrDefaultAsync(t => t.MobileNo == parameters.Email || t.Email == parameters.Email); if (isMobile != null && PasswordHash.VerifySignature(parameters.Password, isMobile.Password, isMobile.Salt)) { isMobile.Token = await ApplicationTokenProvider.GetTokenAsync(isMobile); return(isMobile); } else { var isEmail = await Uow.Repository <FacebookUser>().SingleOrDefaultAsync(t => t.Email == parameters.Email); if (isEmail != null && PasswordHash.VerifySignature(parameters.Password, isEmail.Password, isEmail.Salt)) { isMobile.Token = await ApplicationTokenProvider.GetTokenAsync(isMobile); return(isMobile); } else { return(0); } // return "Invalid credentials"; } }
public async Task <IActionResult> Facebook(FacebookUserModel facebookUserModel) { var clientFactory = httpClientFactory.CreateClient(); var url = "https://graph.facebook.com/me?access_token=" + facebookUserModel.AccessToken; HttpRequestMessage requestMessage = new HttpRequestMessage(HttpMethod.Get, url); HttpResponseMessage response = await clientFactory.SendAsync(requestMessage); if (response.StatusCode == HttpStatusCode.OK) { var userExists = await userManager.FindByNameAsync(facebookUserModel.Email); if (userExists == null) { var facebookRegister = new RegisterModel() { Username = facebookUserModel.Email, Email = facebookUserModel.Email, }; await RegisterFacebook(facebookRegister, facebookUserModel); } var facebookLogin = new LoginModel() { Username = facebookUserModel.Email, }; return(await LoginFacebook(facebookLogin)); } return(Unauthorized()); }
public ActionResult UserDetails() { var client = new FacebookClient("EAAdRFbKuurMBACHZBZAgNgue05EY3NpbXLaZCbobe91gmfZBvVkhFqgGeg4KItL2GL7Vk0CrsM9BL3Ymnf7EI1GxNRpZCsaTGtbCZCiqvdW3WBEEoCyZC4ZA2MBulgLZC4XVRJZAngh1rmgVBhOySgSQZCMwHDQxlvzfC1sQx6gVhis2QZDZD"); dynamic fbresult = client.Get("me?fields=id,email,first_name,last_name,gender,locale,link,timezone,location,picture"); FacebookUserModel facebookUser = Newtonsoft.Json.JsonConvert.DeserializeObject <FacebookUserModel>(fbresult.ToString()); return(View(facebookUser)); }
public async Task UpdateAsync(FacebookUserModel entity) { FacebookUser facebookUser = new FacebookUser(); facebookUser.LoginStatus = entity.LoginStatus; await Uow.RegisterDirtyAsync(facebookUser); await Uow.CommitAsync(); }
public ActionResult UserDetails() { var client = new FacebookClient(Session["accessToken"].ToString()); dynamic fbresult = client.Get("me?fields=id,email,first_name,last_name,gender,locale,link,timezone,location,picture"); FacebookUserModel facebookUser = Newtonsoft.Json.JsonConvert.DeserializeObject <FacebookUserModel>(fbresult.ToString()); Session["user"] = fbresult.ToString(); return(PartialView("Navbar", facebookUser)); }
FacebookUserModel getMe() { var access_token = ((ClaimsIdentity)User.Identity).Claims.FirstOrDefault(c => c.Type == "FacebookAccessToken").Value; var client = new FacebookClient(access_token); //dynamic fbresult = client.Get("me?fields=id,picture.width(110).height(110)"); dynamic fbresult = client.Get("me?fields=id,picture.type(normal)"); FacebookUserModel facebookUser = Newtonsoft.Json.JsonConvert.DeserializeObject <FacebookUserModel>(fbresult.ToString()); return(facebookUser); }
public async Task <FacebookUserModel> GetUserDataAsync(string accessToken) { var httpClient = new HttpClient(); string json = await httpClient.GetStringAsync($"https://graph.facebook.com/me?fields=email,first_name,last_name,id,picture&access_token={accessToken}"); FacebookUserModel user = JsonConvert.DeserializeObject <FacebookUserModel>(json); return(user); }
private void PopulateFacebookEmailWithDummyData(FacebookUserModel facebookUser) { var chars = "ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789"; var random = new Random(); var randomUserName = new string( Enumerable.Repeat(chars, 8) .Select(s => s[random.Next(s.Length)]) .ToArray()); facebookUser.Email = facebookUser.Email ?? String.Format("{0}@test.com", randomUserName); }
public static SocialMediaConnectStatus Register(FacebookUserModel model, string userProvider) { SocialMediaConnectStatus connectStatus = SocialMediaConnectStatus.LoggedIn; var userManager = UserManager.GetManager(userProvider); userManager.Provider.SuppressSecurityChecks = true; if (!userManager.UserExists("facebook_user" + model.UserId)) { System.Web.Security.MembershipCreateStatus status; var user = userManager.CreateUser("facebook_user" + model.UserId, Encrypt(model.UserId), model.Email, "Question1", "Answer1", true, null, out status); userManager.SaveChanges(); userManager.Provider.SuppressSecurityChecks = false; SitefinityUserModel sfUserModel = new SitefinityUserModel(); //var profileManager = UserProfileManager.GetManager(); //var profile = profileManager.CreateProfile(user, typeof(SitefinityProfile).FullName) as SitefinityProfile; //profile.FirstName = model.FirstName; //profile.LastName = model.LastName; //TODO: Cast Facebook Model to Sitefinity Model sfUserModel.CreatedUserId = user.Id; sfUserModel.FirstName = model.FirstName; sfUserModel.LastName = model.LastName; sfUserModel.Avatar = model.ProfileImageUrl; sfUserModel.Birthday = model.Birthday; sfUserModel.Location = model.Location; sfUserModel.Gender = model.Gender; RoleManager roleManager = RoleManager.GetManager(); roleManager.Provider.SuppressSecurityChecks = true; roleManager.Provider.SuppressSecurityChecks = false; if (status != MembershipCreateStatus.Success) { return(SocialMediaConnectStatus.Failed); } connectStatus = SocialMediaConnectStatus.Registered; } UserLoggingReason loginStatus = Login(model, "Default"); Login(model, userProvider); return(connectStatus); }
public ActionResult UserDetails() { if (Session["accessToken"] == null) { return(View("/Home/Welcome")); } var client = new FacebookClient(Session["accessToken"].ToString()); dynamic fbresult = client.Get("me?fields=id,name,picture.type(large)"); FacebookUserModel facebookUser = Newtonsoft.Json.JsonConvert.DeserializeObject <FacebookUserModel>(fbresult.ToString()); return(View(facebookUser)); }
public CurrentUserModel ToCurrentUserModelFrom(FacebookUserModel from) { var user = new CurrentUserModel(); user.FirstName = from.FirstName; user.LastName = from.LastName; user.UserName = from.Username; user.Id = from.Id; user.Avatar = from.Picture.ToString(); user.Email = from.Email; return(user); }
private void OnFacebookLoginCompleted(FacebookUserModel facebookUser, Exception exception) { if (exception == null) { _facebookUser = facebookUser; _isUserLoggedIn = true; } else { _errorMessage = exception.Message; Debug.WriteLine("Error: " + exception.Message); } }
public static FacebookUserModel FacebookHandshake(string redirectUri, HttpRequestBase request) { var model = new FacebookUserModel(); var client = new FacebookClient(); var oauthResult = client.ParseOAuthCallbackUrl(request.Url); // Build the Return URI form the Request Url // Exchange the code for an access token dynamic result = client.Get("/oauth/access_token", new { client_id = SocialMediaConnectConstants.AppId, redirect_uri = redirectUri, client_secret = SocialMediaConnectConstants.AppSecret, code = oauthResult.Code , }); // Read the auth values string accessToken = result.access_token; //If needed you can add the access token to a cookie for pulling additional inforamtion out of Facebook //DateTime expires = DateTime.UtcNow.AddSeconds(Convert.ToDouble(result.expires)); //HttpCookie myCookie = HttpContext.Current.Request.Cookies["accessToken"] ?? new HttpCookie("accessToken"); //myCookie.Values["value"] = accessToken; //myCookie.Expires = expires; //HttpContext.Current.Response.Cookies.Add(myCookie); // Get the user's profile information dynamic me = client.Get("/me", new { fields = "name,picture,first_name,last_name,email,id,birthday,location,gender", access_token = accessToken }); // Read the Facebook user values model.UserId = me.id; model.FirstName = me.first_name; model.LastName = me.last_name; model.Email = me.email; model.ProfileImageUrl = ExtractImageUrl(me); model.Birthday = me.birthday; model.Gender = me.gender; model.Location = me.location["name"].ToString(); return(model); }
public User FacebookModelToUser(FacebookUserModel fbModel) { User user = new User() { uuid = fbModel.id, fname = fbModel.first_name, lname = fbModel.last_name, emailId = fbModel.email, profilepicurl = fbModel.picture.data.url, homepageurl = fbModel.link, gender = fbModel.gender.ToUpper().ElementAt(0).ToString() }; return(user); }
public async void CreateUser(string accessToken) { var fbClient = new FacebookClient(accessToken); dynamic fbresult = fbClient.Get("me?fields=id,email,first_name,last_name,gender,locale,link,timezone,location,picture"); FacebookUserModel fbUser = Newtonsoft.Json.JsonConvert.DeserializeObject <FacebookUserModel>(fbresult.ToString()); User user = FacebookModelToUser(fbUser); var client = new RestClient(); client.EndPoint = @"http://leadonlinetestseries.com/registration/createUser/"; client.Method = HttpVerb.POST; client.PostData = JsonConvert.SerializeObject(user); client.ContentType = "application/json"; var json = client.MakeRequest(); }
private async Task <ApplicationUser> RegisterFBUser(FacebookUserModel facebookUserModel) { //await RemoveUserIfNotConfirmed(facebookUserModel.email); var user = await _userManager.FindByEmailAsync(facebookUserModel.email); if (user != null) { user.EmailConfirmed = true; } else { user = new ApplicationUser { UserName = facebookUserModel.email, Email = facebookUserModel.email, EmailConfirmed = true }; var result = await _userManager.CreateAsync(user); if (!result.Succeeded) { throw new Exception("cannot create facebook user"); } var customer = new Customer { id = user.Id, imgSrc = facebookUserModel.pictureSrc, fullName = $"{facebookUserModel.fname} {facebookUserModel.lname}" }; _context.Customers.Add(customer); if (await _context.SaveChangesAsync() != 1) { throw new Exception("cannot add customer user"); } } var addLoginResult = await _userManager.AddLoginAsync(user, new UserLoginInfo( GlobalVariables.FacebookProviderName, facebookUserModel.id, GlobalVariables.FacebookProviderDisplayName)); if (!addLoginResult.Succeeded) { throw new Exception("cannot add facebook user"); } return(user); }
// GET: AnnouncementsMVC public string Index(string what = "all") { ContextProvider contextProvider = new ContextProvider(); AnnouncementService announcementService = new AnnouncementService(contextProvider, new TagService(contextProvider)); IEnumerable <Announcement> c = null; switch (what.ToLower()) { case "all": { c = announcementService.GetAll(); break; } case "my": { FacebookUserModel me = getMe(); c = announcementService.GetOwnAnnouncements(me.id); foreach (var announcement in c) { announcement.AuthorPicture = me.picture.data.url; } break; } case "friends": { List <FacebookFriendModel> friends = getFriends(); List <string> ids = friends.Select(f => f.id).ToList(); c = announcementService.GetFriendsAnnouncements(ids); foreach (var announcement in c) { announcement.AuthorPicture = friends.Where(f => f.id == announcement.AuthorId).Select(f => f.picture).FirstOrDefault(); } break; } } var setting = new JsonSerializerSettings { ContractResolver = new CamelCasePropertyNamesContractResolver() }; return(JsonConvert.SerializeObject(c, Formatting.None, setting)); }
public static UserLoggingReason Login(FacebookUserModel model, string userProvider) { Credentials credentials = new Credentials() { UserName = "******" + model.UserId, Password = Encrypt(model.UserId), Persistent = false, MembershipProvider = userProvider }; if (credentials == null) { var result = UserLoggingReason.Unknown; return(result); } return(SecurityManager.AuthenticateUser(credentials)); }
private FacebookUserModel GetData(Claim access_token, IIdentity identity) { var claimsIdentity = HttpContext.User.Identity as ClaimsIdentity; try { var email = "";//claimsIdentity.FindAll("urn:facebook:email").First().Value; var fb = new FacebookClient(access_token.Value); dynamic myFriends = fb.Get("/me/taggable_friends"); dynamic myStatuses = fb.Get("/me/statuses"); logger.Debug(myFriends); var fbm = new FacebookUserModel() { Name = identity.Name, Email = email }; var friendsList = new List <FriendModel>(); foreach (dynamic friend in myFriends.data) { friendsList.Add(new FriendModel() { Name = friend.name, Image = friend.picture.data.url }); //Response.Write("Name: " + friend.name + "<br/>Facebook id: " + friend.id + "<br/><br/>"); } fbm.Friends = friendsList; List <StatusModel> sm = new List <StatusModel>(); foreach (dynamic s in myStatuses.data) { sm.Add(new StatusModel(s)); } fbm.Statuses = sm; return(fbm); } catch (Exception e) { logger.Error(e); return(new FacebookUserModel()); } }
public JsonResult UserDetail(FacebookLoginModel model) { Session["uid"] = model.uid; Session["accessToken"] = model.accessToken; var client = new FacebookClient(model.accessToken); dynamic fbresult = client.Get("me?fields=id,email,first_name,last_name,gender"); FacebookUserModel facebookUser = Newtonsoft.Json.JsonConvert.DeserializeObject <FacebookUserModel>(fbresult.ToString()); User lgnUser = Current.Context.User.FirstOrDefault(d => d.FacebookId == facebookUser.id); if (lgnUser != null) { Current.setSessionItem("userInfo", lgnUser); } else { var newUser = new User(); var oldUserInfo = Current.Context.User.FirstOrDefault(a => !string.IsNullOrEmpty(facebookUser.email) && a.Email == facebookUser.email); if (oldUserInfo != null) { //eğer adam kendi mail adresiyle daha önceden kaydolmuşsa bu hesapla facebooku eşleştirelim oldUserInfo.FacebookId = facebookUser.id; Current.Context.SaveChanges(); Current.setSessionItem("userInfo", oldUserInfo); } else { newUser = new User { Name = facebookUser.first_name, Surname = facebookUser.last_name, Email = facebookUser.email, FacebookId = facebookUser.id, UserTypeId = Constants.USER_TYPE_GUEST, Status = true }; Current.Context.User.Add(newUser); Current.Context.SaveChanges(); Current.setSessionItem("userInfo", newUser); } } return(Json(new { success = true })); }
public async Task AddAsync(FacebookUserModel entity) { FacebookUser facebookUser = new FacebookUser(); PasswordResult passwordResult = PasswordHash.Encrypt(entity.Password); facebookUser.FirstName = entity.FirstName; facebookUser.LastName = entity.LastName; facebookUser.Email = entity.Email; facebookUser.MobileNo = entity.MobileNo; facebookUser.GenderAO = entity.GenderAO; facebookUser.LoginStatus = entity.LoginStatus; facebookUser.DateOfBirth = entity.DateOfBirth; facebookUser.CreatedDateTime = entity.CreatedDateTime; facebookUser.Password = passwordResult.Signature; facebookUser.Salt = passwordResult.Salt; await Uow.RegisterNewAsync(facebookUser); await Uow.CommitAsync(); }
public async Task <object> GetBy(FacebookUserModel parameters) { var isMobile = await Uow.Repository <FacebookUser>().SingleOrDefaultAsync(t => t.MobileNo == parameters.MobileNo); if (isMobile != null && PasswordHash.VerifySignature(parameters.Password, isMobile.Password, isMobile.Salt)) { return("suuccess with mobile"); } else { var isEmail = await Uow.Repository <FacebookUser>().SingleOrDefaultAsync(t => t.Email == parameters.Email); if (isEmail != null && PasswordHash.VerifySignature(parameters.Password, isEmail.Password, isEmail.Salt)) { return("suuccess with email"); } else { return("Invalid credentials"); } // return "Invalid credentials"; } }
public Task DeleteAsync(FacebookUserModel parameters) { throw new NotImplementedException(); }
public async Task UpdateAsync(FacebookUserModel entity) { await Uow.RegisterDirtyAsync(entity); await Uow.CommitAsync(); }
public ActionResult FacebookLoginCallback(string state, string code) { if (string.IsNullOrEmpty(state) || state != SessionManager.FBstate) { return(ErrorPage()); } string returnUrl = SessionManager.ReturnUrl; List <string> exceptRoute = new List <string> { "FacebookLoginCallback", "Confirm" }; if (exceptRoute.Any(x => returnUrl.Contains(x))) { returnUrl = ""; } SessionManager.ReturnUrl = ""; SessionManager.FBstate = ""; SessionManager.ExternalLogin = null; string errorMessage = "", successMessage = ""; var tokenModel = new FacebookTokenModel(); var userModel = new FacebookUserModel(); var loginModel = new LoginViewModel(); //1.取得access_token string url = "https://graph.facebook.com/v3.1/oauth/access_token?" + "client_id=" + ApplicationHelper.ApiKey.FacebookAppId + "&client_secret=" + ApplicationHelper.ApiKey.FacebookAppSecret + "&redirect_uri=" + RouteHelper.BaseUrl() + Url.Action("FacebookLoginCallback", "Member") + "&code=" + code; try { var request = (HttpWebRequest)WebRequest.Create(url); var response = (HttpWebResponse)request.GetResponse(); var reader = new StreamReader(response.GetResponseStream()); string jsonStr = reader.ReadToEnd().ToString(); tokenModel = _Json.JsonToModel <FacebookTokenModel>(jsonStr); reader.Close(); response.Close(); } catch (Exception) { errorMessage = "無法取得Facebook存取權"; } //2.取得使用者資訊 if (string.IsNullOrEmpty(errorMessage)) { try { url = "https://graph.facebook.com/me?fields=id,name,email&access_token=" + tokenModel.access_token; var request = (HttpWebRequest)WebRequest.Create(url); var response = (HttpWebResponse)request.GetResponse(); var reader = new StreamReader(response.GetResponseStream()); var jsonStr = reader.ReadToEnd().ToString(); userModel = _Json.JsonToModel <FacebookUserModel>(jsonStr); reader.Close(); response.Close(); } catch (Exception) { errorMessage = "取得Facebook使用者錯誤"; } } //3.Login/SignUp if (string.IsNullOrEmpty(errorMessage)) { var model = new ExternalLoginViewModel { ExternalType = ExternalType.Facebook, ExternalKey = userModel.id, UserName = userModel.name, Email = userModel.email }; //FB新註冊, 一律先到確認頁 > 送出驗證Email if (!service.ExistExternalLogin(model)) { SessionManager.ExternalLogin = model; return(RedirectToAction("SignUp", model)); } //可外部登入 loginModel = new LoginViewModel { Account = userModel.id, LoginType = LoginType.Facebook }; } return(LoginHelper(loginModel, returnUrl, errorMessage, successMessage)); }
public HashSet <string> UpdateValidation(FacebookUserModel entity) { return(ValidationMessages); }
public HashSet <string> DeleteValidation(FacebookUserModel parameters) { return(ValidationMessages); }
public async Task <object> GetAsync(FacebookUserModel parameters) { // throw new NotImplementedException(); return(0); }