private void OnDataRequested(DataTransferManager sender, DataRequestedEventArgs args)
 {
     if (FacebookModel != null)
     {
         FacebookModel.GetShareContent(args.Request);
     }
 }
Пример #2
0
        public SapMtkModel FacebookBusiness(FacebookModel request)
        {
            SapMtkModel response = null;

            if (request != null)
            {
                try
                {
                    response = new SapMtkModel();

                    response.PrimerNombre   = request.PrimerNombre;
                    response.Apellidos      = request.Apellidos;
                    response.Ciudad         = request.Ciudad;
                    response.Email          = request.Email;
                    response.NumeroTelefono = request.NumeroTelefono;
                    response.HorarioPrefiereSerContactado = request.HorarioPrefiereSerContactado;
                    response.CuandoQuieresIniciarClase    = request.CuandoQuieresIniciarClase;
                }
                catch (Exception ex)
                {
                    throw ex;
                }
            }
            else
            {
                throw new Exception("El modelo esta vacio");
            }

            return(response);
        }
Пример #3
0
        protected async override void OnNavigatedTo(NavigationEventArgs e)
        {
            _navigationHelper.OnNavigatedTo(e);
            await FacebookModel.LoadItemsAsync();

            DataContext = this;
        }
Пример #4
0
        protected override async void OnNavigatedTo(NavigationEventArgs e)
        {
            _dataTransferManager = DataTransferManager.GetForCurrentView();
            _dataTransferManager.DataRequested += OnDataRequested;

            _navigationHelper.OnNavigatedTo(e);
            await FacebookModel.LoadItemsAsync();
        }
Пример #5
0
 /// <summary>
 /// Load ViewModel items asynchronous
 /// </summary>
 public async Task LoadData(bool isNetworkAvailable)
 {
     var loadTasks = new Task[]
     {
         FacebookModel.LoadItems(isNetworkAvailable),
         YouTubeModel.LoadItems(isNetworkAvailable),
         ArmiaWBinguModel.LoadItems(isNetworkAvailable),
     };
     await Task.WhenAll(loadTasks);
 }
        public ActionResult TestFB()
        {
            var fb    = new FacebookHelper();
            var model = new FacebookModel();

            model.Link    = "http://www.ouikum.com/MyB2B/quotation/bidproduct/QO-ACB-130521-2";
            model.Picture = "https://ouikumstorage.blob.core.windows.net/upload/Product/3523/151289/CHANG-509.jpg";
            model.Message = "มีลูกค้าต้องการ $ชื่อสินค้า$ $จำนวน$ สำหรับ Suppliers ท่านไหนสนใจ สามารถเสนอราคา ติดต่อที่";
            var isResult = fb.PostFeed(model);

            return(View());
        }
        public void Post([FromForm] FacebookModel model)
        {
            // foreach (var sandboxItem in _dbContext.Sandbox)      // TODO FAVIO delete this
            // {
            //     Console.WriteLine(sandboxItem.Name);
            // }


            // TODO FAVIO make this dynamic in .Net ans postgresql table:
            switch (model.usersPool)
            {
            case "PEOPLE_WHO_LIKE_THIS_PAGE":

                _dbContext.PeopleWhoLikeThisPage.Add(new PeopleWhoLikeThisPage()
                {
                    ResponseOffset = model.offset,
                    ResponseText   = model.rawFacebookResponse
                });
                break;

            case "PEOPLE_WHO_FOLLOW_THIS_PAGE":

                _dbContext.PeopleWhoFollowThisPage.Add(new PeopleWhoFollowThisPage()
                {
                    ResponseOffset = model.offset,
                    ResponseText   = model.rawFacebookResponse
                });
                break;

            case "PAGES_THAT_LIKE_THIS_PAGE":

                _dbContext.PagesThatLikeThisPage.Add(new PagesThatLikeThisPage()
                {
                    ResponseOffset = model.offset,
                    ResponseText   = model.rawFacebookResponse
                });
                break;

            case "PEOPLE_BANNED_FROM_PAGE":

                _dbContext.PeopleBannedFromPage.Add(new PeopleBannedFromPage()
                {
                    ResponseOffset = model.offset,
                    ResponseText   = model.rawFacebookResponse
                });
                break;
            }



            _dbContext.SaveChanges();
        }
Пример #8
0
        /// <summary>
        /// Evalueate signed request and showing Login / Permisson button or
        /// displaying Facebook data
        /// </summary>
        /// <returns>View</returns>
        public ActionResult Firstpage()
        {
            ViewBag.Message = "Facebook Fanpage App";

            string signedRequest = Session["signedRequest"] != null ?
                                   Session["signedRequest"].ToString() : String.Empty;

            if (String.IsNullOrEmpty(signedRequest))
            {
                return(RedirectToAction("NoSignedRequest"));
            }

            FacebookModel  model  = new FacebookModel();
            FacebookClient client = new FacebookClient();

            client.AppSecret = model.App_Secret;
            dynamic signedRequestObject = null;

            if (client.TryParseSignedRequest(signedRequest, out signedRequestObject))
            {
                model.SignedRequest = new FbSignedRequest(signedRequestObject);
            }
            if (model.SignedRequest == null)
            {
                return(View("ConfigError"));
            }

            if (!String.IsNullOrEmpty(model.SignedRequest.OauthToken))
            {
                FacebookClient authClient = new FacebookClient(model.SignedRequest.OauthToken);
                try
                {
                    JsonObject data = (JsonObject)authClient.Get("/me");
                    model.Me = new MeModel(data);
                }
                catch
                {
                    //e. g. user loged aout or session terminates
                    return(RedirectToAction("Offline"));
                }
            }
            if (model.SignedRequest.User.Locale.Equals("de_de", StringComparison.InvariantCultureIgnoreCase))
            {
                System.Threading.Thread.CurrentThread.CurrentCulture       =
                    System.Threading.Thread.CurrentThread.CurrentUICulture =
                        new CultureInfo("de-DE");
            }
            return(View(model));
        }
        protected override async void OnNavigatedTo(NavigationEventArgs e)
        {
            _dataTransferManager = DataTransferManager.GetForCurrentView();
            _dataTransferManager.DataRequested += OnDataRequested;

            _navigationHelper.OnNavigatedTo(e);

            if (FacebookModel != null)
            {
                await FacebookModel.LoadItemsAsync();

                FacebookModel.SelectItem(e.Parameter);

                FacebookModel.ViewType = ViewTypes.Detail;
            }
            DataContext = this;
        }
Пример #10
0
        /// <summary>
        /// Default route outside Facebook iframe
        /// </summary>
        /// <returns>redirect to Facebook Tab Page</returns>
        public ActionResult NoSignedRequest()
        {
            bool fb_show_app_start_view_without_facebook = false;

            bool.TryParse(ConfigurationManager.AppSettings["fb_show_app_start_view_without_facebook"],
                          out fb_show_app_start_view_without_facebook);

            FacebookModel model = new FacebookModel();

            if (fb_show_app_start_view_without_facebook)
            {
                return(View(model));
            }
            else
            {
                return(Redirect(model.FanPageUrl));
            }
        }
Пример #11
0
        /// <summary>
        /// Post Facebook
        /// </summary>
        /// <param name="datosFormulario"></param>
        /// <returns></returns>
        public IHttpActionResult PostFacebook(FacebookModel datosFormulario)
        {
            ApiBusiness mapeoDatos = new ApiBusiness();

            try
            {
                if (!ModelState.IsValid)
                {
                    return(BadRequest("Modelo de datos inválido"));
                }

                var response = mapeoDatos.FacebookBusiness(datosFormulario);

                return(Ok("Modelo enviado"));
            }
            catch (Exception e)
            {
                return(BadRequest("mensaje de error: " + e.Message));
            }
        }
Пример #12
0
        private async Task <string> GetUserId(string accessToken)
        {
            using (HttpClient client = new HttpClient())
            {
                client.BaseAddress = new Uri(Constants.FacebookGraphAPIBaseUrl);

                HttpResponseMessage response = client.GetAsync(Constants.FacebookGraphAPIMeEndpoint + accessToken).Result;

                string content = await response.Content.ReadAsStringAsync();

                if (response.StatusCode == HttpStatusCode.OK)
                {
                    FacebookModel contentResponse = JsonConvert.DeserializeObject <FacebookModel>(content);

                    return(contentResponse.Id);
                }

                return(string.Empty);
            }
        }
Пример #13
0
        public async Task <IActionResult> Create([Bind("SongId,SongName,Genre,ReleaseDate")] SongModel songModel, IFormFile songImagePath, IFormFile songPath)
        {
            if (ModelState.IsValid)
            {
                songModel.SongPath      = FileHelper.SaveFile(songPath, "songs", songPath.FileName);
                songModel.AddedDate     = DateTime.UtcNow;
                songModel.SongImagePath = FileHelper.SaveFile(songImagePath, "images", songImagePath.FileName);
                _context.Add(songModel);
                //adds the created song to the current artist according to the session
                int id = HttpContext.Session.GetInt32(SessionConsts.UserId).Value;
                Models.BridgeModel.ArtistSongModel temp = new Models.BridgeModel.ArtistSongModel();
                temp.SongId = songModel.SongId;
                temp.UserId = id;
                _context.Add(temp);

                await _context.SaveChangesAsync();

                FacebookModel facebookModel = new FacebookModel();
                await facebookModel.Post(string.Format("A new song has been added to the site -> {0}", songModel.SongName));

                return(RedirectToAction(nameof(Display)));
            }
            return(View(songModel));
        }
        public override async Task GrantResourceOwnerCredentials(OAuthGrantResourceOwnerCredentialsContext context)
        {
            NinjectWrapper wrapper = new NinjectWrapper();

            ClaimsIdentity identity = new ClaimsIdentity(context.Options.AuthenticationType);

            Dictionary <string, string> parameters = context.Request.GetBodyParameters();

            IEnumerable <User> users = ((wrapper.UsersManager as IManager).GetItems() as IEnumerable <User>).ToList();

            User user = users.FirstOrDefault(u => u.Email == context.UserName);

            if (user != null)
            {
                if (!parameters.ContainsKey("external"))
                {
                    string hashedPassword = PasswordHelper.CreatePasswordHash(context.Password, user.Salt);

                    if (user.HashedPassword == hashedPassword)
                    {
                        identity.AddClaim(new Claim(ClaimTypes.Role, "Admin"));
                        identity.AddClaim(new Claim(ClaimTypes.Email, user.Email));
                        identity.AddClaim(new Claim(ClaimTypes.Name, string.Format("{0} {1}", user.FirstName, user.LastName)));
                        // add additional claims if needed
                        context.Validated(identity);
                    }
                    else
                    {
                        context.SetError("invalid_grant", "Provided username or password is incorrect");
                    }
                }
                else
                {
                    using (HttpClient client = new HttpClient())
                    {
                        client.BaseAddress = new Uri(Constants.FacebookGraphAPIBaseUrl);

                        HttpResponseMessage response = await client.GetAsync(Constants.FacebookGraphAPIMeEndpoint + parameters["access_token"]);

                        string content = await response.Content.ReadAsStringAsync();

                        if (response.StatusCode == HttpStatusCode.OK)
                        {
                            FacebookModel contentResponse = JsonConvert.DeserializeObject <FacebookModel>(content);

                            if (user.UserExternalId == contentResponse.Id)
                            {
                                identity.AddClaim(new Claim(ClaimTypes.Role, "User"));
                                identity.AddClaim(new Claim(ClaimTypes.Email, user.Email));
                                identity.AddClaim(new Claim(ClaimTypes.Name, string.Format("{0} {1}", user.FirstName, user.LastName)));
                                // add additional claims if needed
                                context.Validated(identity);
                            }
                            else
                            {
                                context.SetError("invalid_grant", "Facebook authorization failed");
                            }
                        }
                    }
                }
            }
            else
            {
                context.SetError("invalid_grant", "Provided username or password is incorrect");
            }
        }
Пример #15
0
        public async Task <IActionResult> Facebook([FromBody] FacebookModel model)
        {
            var userInfo = new FacebookUserData();

            try
            {
                var userInfoResponse = await Client.GetStringAsync($"https://graph.facebook.com/v3.0/me?fields=id,email,first_name,last_name,gender,locale,birthday,picture&access_token={model.AccessToken}");

                userInfo = JsonConvert.DeserializeObject <FacebookUserData>(userInfoResponse);
            }
            catch (Exception ex)
            {
                return(new BadRequestObjectResult(new List <ErrorViewModel>()
                {
                    new ErrorViewModel()
                    {
                        Code = "InvalidToken", Description = "Facebook token is not valid."
                    }
                }));
            }
            if (userInfo.Picture != null)
            {
                try
                {
                    var imageResponse = await Client.GetStringAsync($"https://graph.facebook.com/v3.0/{userInfo.Id}/picture?type=album&redirect=false");

                    var image = JsonConvert.DeserializeObject <FacebookPictureData>(imageResponse);
                    userInfo.Picture = image;
                }
                catch (Exception ex)
                {
                    Console.WriteLine(ex);
                }
            }
            var existingUser = await _userManager.FindByEmailAsync(userInfo.Email);

            if (existingUser == null)
            {
                var user = new ApplicationUser
                {
                    FacebookId  = userInfo.Id,
                    Email       = userInfo.Email,
                    UserName    = userInfo.FirstName + userInfo.LastName,
                    PictureUrl  = userInfo.Picture?.Data?.Url,
                    Visibility  = true,
                    Nationality = "US"
                };

                if (userInfo.Gender != null)
                {
                    user.Gender = userInfo.Gender.Equals("male") ? Gender.Male : userInfo.Gender.Equals("female") ? Gender.Female : Gender.Other;
                }
                else
                {
                    user.Gender = Gender.None;
                }
                if (userInfo.Birthday != DateTime.MinValue)
                {
                    var dateOfBirth = new DateTime(day: userInfo.Birthday.Day, month: userInfo.Birthday.Month, year: DateTime.Now.Year);
                    if (DateTime.Now >= dateOfBirth)
                    {
                        user.Age = DateTime.Now.Year - userInfo.Birthday.Year;
                    }
                    else
                    {
                        user.Age = DateTime.Now.Year - userInfo.Birthday.Year - 1;
                    }
                }

                user.UserName = UserExtensions.RemoveDiacritics(user.UserName);
                var result = await _userManager.CreateAsync(user, Convert.ToBase64String(Guid.NewGuid().ToByteArray()).Substring(0, 8));

                if (!result.Succeeded)
                {
                    return(new BadRequestObjectResult(result.Errors));
                }
                else
                {
                    existingUser = await _userManager.FindByNameAsync(user.UserName);
                }
            }

            var jwt = await Tokens.GenerateJwt(_jwtFactory.GenerateClaimsIdentity(existingUser.UserName, existingUser.Id),
                                               _jwtFactory, existingUser.UserName, _jwtOptions, new JsonSerializerSettings { Formatting = Formatting.Indented }, existingUser.ProfileComplete);

            return(new OkObjectResult(jwt));
        }
Пример #16
0
 public FacebookHandler(IMapper mapper, RequestModel requestModel)
 {
     _mapper       = mapper;
     _requestModel = requestModel;
     facebookModel = _mapper.Map <FacebookModel>(_requestModel);
 }
Пример #17
0
 protected override async void OnNavigatedTo(NavigationEventArgs e)
 {
     _navigationHelper.OnNavigatedTo(e);
     await FacebookModel.LoadItemsAsync();
 }