public FacebookDetail()
        {
            this.InitializeComponent();
            _navigationHelper = new NavigationHelper(this);

            FacebookModel = new FacebookViewModel();
        }
        public FacebookLogin()
        {
            try
            {
                InitializeComponent();
                dataWCF        = DependencyService.Get <IDataStore>();
                BindingContext = new FacebookViewModel();
                var apiRequest =
                    "https://www.facebook.com/dialog/oauth?client_id="
                    + ClientId
                    + "&display=popup&response_type=token&redirect_uri=http://www.facebook.com/connect/login_success.html";

                var webView = new WebView
                {
                    Source        = apiRequest,
                    HeightRequest = 1
                };

                webView.Navigated += WebViewOnNavigated;

                Content = webView;
            }
            catch (Exception ex)
            {
            }
        }
        public async Task <IActionResult> CreateAccountWithFacebook([FromBody] FacebookViewModel avm)
        {
            List <string> errors = CheckLongituteAndLatitude(avm.Latitude, avm.Longitude);

            if (avm.Token == null)
            {
                errors.Add("TokenMissing");
            }
            if (errors.Count != 0)
            {
                return(BadRequest(errors));
            }
            Facebook         fbOptions  = new Facebook();
            FacebookResponse fbResponse = await fbOptions.GetFacebookResponse(avm.Token);

            var user = new ApplicationUser {
                UserName = avm.UserName, Longitude = (double)avm.Longitude, Latitude = (double)avm.Latitude, FacebookId = fbResponse.data.user_id.ToString()
            };
            var result = await UserManager.CreateAsync(user);

            if (!result.Succeeded)
            {
                return(BadRequest(result.Errors));
            }

            return(CreatedAtRoute("GetAccount", new { user.Id }, user));
        }
        public async Task <IActionResult> Facebook([FromBody] FacebookViewModel model)
        {
            var appAccessTokenResponse = await Client.GetStringAsync
                                             ($"https://graph.facebook.com/oauth/access_token?client_id={_facebookAuthSettings.AppId}&client_secret={_facebookAuthSettings.AppSecret}&grant_type=client_credentials");

            var appAccessToken = JsonConvert.DeserializeObject <FacebookAppAccessToken>(appAccessTokenResponse);

            var userAccessTokenValidationResponse = await Client.GetStringAsync
                                                        ($"https://graph.facebook.com/debug_token?input_token={model.AccessToken}&access_token={appAccessToken.AccessToken}");

            var userAccessTokenValidation = JsonConvert.DeserializeObject <FacebookUserAccessTokenValidation>(userAccessTokenValidationResponse);

            if (!userAccessTokenValidation.Data.IsValid)
            {
                ModelState.AddModelError("login_failure", "Invalid fb token");
                return(BadRequest(ModelState));
            }

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

            var userInfo = JsonConvert.DeserializeObject <FacebookUserData>(userInfoResponse);

            var user = await _userManager.FindByEmailAsync(userInfo.Email);

            if (user == null)
            {
                var appUser = new User
                {
                    Email      = userInfo.Email,
                    UserName   = userInfo.Email,
                    FirstName  = userInfo.FirstName,
                    LastName   = userInfo.LastName,
                    FacebookId = userInfo.Id
                };

                var result = await _userManager.CreateAsync(appUser, Convert.ToBase64String(Guid.NewGuid().ToByteArray()));

                if (!result.Succeeded)
                {
                    foreach (var item in result.Errors)
                    {
                        ModelState.AddModelError(item.Code, item.Description);
                    }
                }
            }

            var localUser = await _userManager.FindByNameAsync(userInfo.Email);

            if (localUser == null)
            {
                ModelState.AddModelError("login_failure", "Failed to create local user account");
                return(BadRequest(ModelState));
            }

            var jwt = await GenerateJwt(localUser);

            return(Ok(jwt));
        }
Exemple #5
0
        // GET: Login
        public ActionResult Index()
        {
            ViewBag.UrlFb = GetFacebookLoginUrl();
            if (Session["FACEBOOK_ACCESS_TOKEN"] != null)
            {
                var    _facebook  = new FacebookClient(Session["FACEBOOK_ACCESS_TOKEN"].ToString());
                var    _requestFB = _facebook.Get("me");
                string _output    = JsonConvert.SerializeObject(_requestFB);
                { }

                FacebookViewModel _fbVM = JsonConvert.DeserializeObject <FacebookViewModel>(_output);
                this.AutenticaUsuario(new UsuarioViewModel()
                {
                    Nome = _fbVM.name, Login = _fbVM.id
                });

                //---
                //VALIDAR SE FACEBOOKID EXISTE
                var _usuario = Models.UsuarioModel.GetByFacebookId(_fbVM.id);
                if (_usuario != null)
                {
                    if (_usuario.UsuarioId > 0)
                    {
                        return(RedirectToAction("Index", "Home"));
                    }
                    else
                    {
                        //---
                        //CADASTRAR USUÁRIO
                        if (Models.UsuarioModel.Create(new UsuarioViewModel()
                        {
                            Nome = _fbVM.name,
                            FacebookAccessToken = Session["FACEBOOK_ACCESS_TOKEN"].ToString(),
                            FacebookId = _fbVM.id
                        }))
                        {
                            //---
                            //REDIRECIONAR PARA TELA DE USUÁRIO PARA COMPLETAR CADASTRO
                            return(RedirectToAction("Edit", "Usuarios", new { id = Models.UsuarioModel.GetByFacebookId(_fbVM.id).UsuarioId }));
                        }
                        else
                        {
                            this.AddNotification(@Resources.Resource1.FalhaOperacao, NotificationType.ERROR);
                            return(View("Index"));
                        }
                    }
                }
                else
                {
                    this.AddNotification(@Resources.Resource1.FalhaOperacao, NotificationType.ERROR);
                    return(View("Index"));
                }
            }
            else
            {
                return(View());
            }
        }
        public FacebookList()
        {
            this.InitializeComponent();
            _navigationHelper = new NavigationHelper(this);

            FacebookModel = new FacebookViewModel();

            SizeChanged += OnSizeChanged;
        }
        public FacebookDetail()
        {
            this.InitializeComponent();
            _navigationHelper = new NavigationHelper(this);

            SizeChanged += OnSizeChanged;

            FacebookModel = new FacebookViewModel();
        }
Exemple #8
0
        /// <summary>
        /// Gets Facebook posts from the specified Facebook page.
        /// </summary>
        /// <param name="pageId">The Facebook page id. (name in url)</param>
        /// <param name="accessToken">Permanent access token</param>
        /// <returns></returns>
        internal async Task <List <FacebookPost> > GetFacebookPosts(string pageId, string accessToken)
        {
            // https://developers.facebook.com/docs/graph-api
            // TODO : Webhooks https://developers.facebook.com/docs/graph-api/webhooks
            var fbList    = new List <FacebookPost>();
            var viewModel = new FacebookViewModel();

            using (var client = new HttpClient())
            {
                try
                {
                    int numberOfFeeds = 20,                     // Number of feeds to get per request
                        numberOfPosts = 20;                     // Number of total posts (numberOfFeeds * n)

                    // To add or remove fields below: Add/Remove them to the ViewModel as well.
                    string FeedRequestUrl = string.Concat("https://graph.facebook.com/" + pageId + "/posts?limit=",
                                                          numberOfFeeds,
                                                          "&access_token=",
                                                          accessToken,
                                                          @"&fields=
						full_picture,
						picture,
						link,
						message,
						created_time,
						description,
						id,
						caption,
						is_published,
						name,
						object_id,
						type,
						is_hidden,
						permalink_url,
						from"
                                                          );
                    while (!string.IsNullOrWhiteSpace(FeedRequestUrl) && fbList.Count < numberOfPosts)
                    {
                        var response = await client.GetAsync(FeedRequestUrl);

                        response.EnsureSuccessStatusCode();                         // Throw in not success

                        var stringResponse = await response.Content.ReadAsStringAsync();

                        viewModel      = JsonConvert.DeserializeObject <FacebookViewModel>(stringResponse);
                        FeedRequestUrl = viewModel.Paging.Next;
                        fbList.AddRange(viewModel.Posts);
                    }
                }
                catch (HttpRequestException e)
                {
                    Console.WriteLine($"Request exception: {e.Message}");
                }
            }
            return(fbList);
        }
        public FacebookPage()
        {
            this.InitializeComponent();
            _navigationHelper = new NavigationHelper(this);

            FacebookModel = new FacebookViewModel();
            DataContext   = this;

            SizeChanged += OnSizeChanged;
        }
        public ActionResult Facebook()
        {
            var facebookApplicationId = ConfigurationManager.Configurator.Istance.facebookApplicationId;
            var viewModel             = new FacebookViewModel
            {
                Facebook = facebookApplicationId
            };

            return(PartialView(viewModel));
        }
        public FacebookDetail()
        {
            this.InitializeComponent();
            _navigationHelper = new NavigationHelper(this);

            FacebookModel = new FacebookViewModel();

            ApplicationView.GetForCurrentView().
                SetDesiredBoundsMode(ApplicationViewBoundsMode.UseVisible);
        }
Exemple #12
0
        public CalendarPage()
        {
            InitializeComponent();

            BindingContext = new FacebookViewModel();
            VM             = (FacebookViewModel)BindingContext;

            //if (Device.OS ==  TargetPlatform.iOS)
            //IconImageSource = new FileImageSource { File = "tab3.png" };
        }
        public FacebookPage()
        {
            this.InitializeComponent();
            _navigationHelper = new NavigationHelper(this);

            FacebookModel = new FacebookViewModel();
            DataContext   = this;

            ApplicationView.GetForCurrentView().
            SetDesiredBoundsMode(ApplicationViewBoundsMode.UseVisible);
        }
        public async Task <IActionResult> CreateTokenFromFacebook([FromForm] FacebookViewModel fvm)
        {
            Facebook         fb         = new Facebook();
            FacebookResponse fbResponse = await fb.GetFacebookResponse(fvm.Token);

            var identity = ApplicationUserManager.GetUserWithFacebookId(Convert.ToString(fbResponse.data.user_id));

            if (identity == null)
            {
                return(BadRequest("Invalid Facebook Id."));
            }

            return(Ok(GenerateToken(identity.Id)));
        }
Exemple #15
0
        public ActionResult FacebookCallback(string code)
        {
            var     fb     = new FacebookClient();
            dynamic result = fb.Post("oauth/access_token", new
            {
                client_id     = "937102470058147",
                client_secret = "be604e66a5b81ad14e010c823be80038",
                redirect_uri  = RedirectedUri.AbsoluteUri,
                code          = code
            });

            var accessToken = result.access_token;

            Session["AccessToken"] = accessToken;
            fb.AccessToken         = accessToken;
            dynamic me       = fb.Get("me?fields=link,first_name,currency,last_name,email,gender,locale,timezone,verified,picture,age_range");
            string  email    = me.email;
            string  lastname = me.last_name;
            string  picture  = me.picture.data.url;

            var json    = JsonConvert.SerializeObject(me);
            var jsonDes = JsonConvert.DeserializeObject <FaceBookResponseModel>(json);
            var model   = new FacebookViewModel(CurrentPage);

            model.FaceBookResponseModel = jsonDes;
            var            fbResponseModel = model.FaceBookResponseModel;
            IMemberService memberService   = Services.MemberService;

            if (Umbraco.MembershipHelper.GetByEmail(fbResponseModel.Email) != null)
            {
                //umbraco member handling

                IMember newMember = memberService.CreateMemberWithIdentity(fbResponseModel.Email, fbResponseModel.Email, $"{fbResponseModel.FirstName} {fbResponseModel.LastName}", "Member");
                newMember.Id = Convert.ToInt32(fbResponseModel.Id);
                memberService.AssignRole(newMember.Id, "jango");



                memberService.Save(newMember, raiseEvents: true);
                //this will logged in
                FormsAuthentication.SetAuthCookie(newMember.Username, false);
            }

            return(View("/Views/FacebookLogin.cshtml", model));
        }
Exemple #16
0
        public IActionResult Login([FromBody] FacebookViewModel content)
        {
            User user = new User
            {
                Username    = content.Name,
                Email       = content.Email,
                Password    = null,
                IsConfirmed = true
            };

            if (this.userRepository.AddUser(user) == null)
            {
                user = this.userRepository.UserGetUserByEmail(user.Email);
            }
            string userToken = this.authenticationService.GenerateTokenForUser(user);

            return(Ok(new { token = userToken }));
        }
        public FacebookProfilePage()
        {
            InitializeComponent();
            BindingContext = new FacebookViewModel();
            var apiRequest =
                "https://www.facebook.com/dialog/oauth?client_id="
                + ClientId
                + "&display=popup&response_type=token&redirect_uri=http://www.facebook.com/connect/login_success.html";

            var webView = new WebView
            {
                Source        = apiRequest,
                HeightRequest = 1
            };

            webView.Navigated += WebViewOnNavigated;

            Content = webView;
        }
        private async void WebViewOnNavigated(object sender, WebNavigatedEventArgs e)
        {
            var accessToken = ExtractAccessTokenFromUrl(e.Url);

            if (accessToken != "")
            {
                accessToken = "EAADAv8wjxlEBADdhNRhVw4ogH0VvPIV6kwGOq7JZC6zZBQKBWGk5r4ntMrTrkRgrWfIor6e4UWwal2mZA4ZAOngBhIJA3ZAinG3VMo4kkoEve2CZC8bgqYs82pLppjbe5l95niNXDx0fePbMJ66m1aA9ji66NX9ydD9bXFUcNQ5JrlxRmeYtID";
                //var vm = BindingContext as FacebookViewModel;
                var facebookViewModel = new FacebookViewModel();
                await facebookViewModel.SetFacebookUserProfileAsync(accessToken);

                BindingContext = facebookViewModel.FacebookProfile;
                Content        = MainStackLayout;

                //await vm.SetFacebookUserProfileAsync(accessToken);

                //Content = MainStackLayout;
            }
        }
        public JsonResult GetUserDetails()
        {
            var fb = new FacebookClient();

            fb.AccessToken = Session["AccessToken"].ToString();


            // Get the user's information, like email, first name, middle name etc
            dynamic me         = fb.Get("me?fields=first_name,middle_name,last_name,id,email");
            string  email      = me.email;
            string  firstname  = me.first_name;
            string  middlename = me.middle_name;
            string  lastname   = me.last_name;

            var model = new FacebookViewModel {
                Email = me.email, FirstName = me.first_name, MiddleName = me.middle_name, LastName = me.last_name
            };

            return(Json(model, JsonRequestBehavior.AllowGet));
        }
Exemple #20
0
        private async void WebViewOnNavigated(object sender, WebNavigatedEventArgs e)
        {
            var accessToken = ExtractAccessTokenFromUrl(e.Url);

            //string accessTokenString = accessToken.ToString();

            if (accessToken != "")
            {
                //App.Current.MainPage = new MainPage();

                FacebookViewModel vm = BindingContext as FacebookViewModel;

                await vm.SetFacebookUserProfileAsync(accessToken);

                //Guardar facebook profile en sesion
                Session.Instance.LoginDriverFacebook(vm.FacebookProfile);

                App.Current.MainPage = new MainPage();
            }
        }
Exemple #21
0
 protected override void OnNavigatedTo(NavigationEventArgs e)
 {
     FacebookModel = NavigationServices.CurrentViewModel as FacebookViewModel;
     if (e.NavigationMode == NavigationMode.New && NavigationContext.QueryString.ContainsKey("id"))
     {
         string id = NavigationContext.QueryString["id"];
         if (!String.IsNullOrEmpty(id))
         {
             _isDeepLink   = true;
             FacebookModel = new FacebookViewModel();
             NavigationServices.CurrentViewModel = FacebookModel;
             FacebookModel.LoadItem(id);
         }
     }
     if (FacebookModel != null)
     {
         FacebookModel.ViewType = ViewTypes.Detail;
     }
     DataContext = FacebookModel;
     base.OnNavigatedTo(e);
 }
 protected override void OnNavigatedTo(NavigationEventArgs e)
 {
     FacebookModel = NavigationServices.CurrentViewModel as FacebookViewModel;
     if (e.NavigationMode == NavigationMode.New && NavigationContext.QueryString.ContainsKey("id"))
     {
         string id = NavigationContext.QueryString["id"];
         if (!String.IsNullOrEmpty(id))
         {
             _isDeepLink = true;
             FacebookModel = new FacebookViewModel();
             NavigationServices.CurrentViewModel = FacebookModel;
             FacebookModel.LoadItem(id);
         }
     }
     if (FacebookModel != null)
     {
         FacebookModel.ViewType = ViewTypes.Detail;
     }
     DataContext = FacebookModel;
     base.OnNavigatedTo(e);
 }
        public FacebookProfileCsPage()
        {
            BindingContext = new FacebookViewModel();

            Title           = "Facebook Profile";
            BackgroundColor = Color.White;

            var apiRequest =
                "https://www.facebook.com/dialog/oauth?client_id="
                + ClientId
                + "&display=popup&response_type=token&redirect_uri=http://www.facebook.com/connect/login_success.html";

            var webView = new WebView
            {
                Source        = apiRequest,
                HeightRequest = 1
            };

            webView.Navigated += WebViewOnNavigated;

            Content = webView;
        }
Exemple #24
0
        public CalendarPage()
        {
            InitializeComponent();

            BindingContext = new FacebookViewModel();
            VM             = (FacebookViewModel)BindingContext;

            if (Device.OS == TargetPlatform.iOS)
            {
                Icon = new FileImageSource {
                    File = "tab3.png"
                }
            }
            ;

            var eventsCalendar = this.FindByName <SfCalendar>("EventsCalendar");

            //eventsCalendar.SetMonthViewItemChangedListener(new SfCalendar.MonthViewItemChangedListener());

            VM.ExecuteGetFacebookEventsCommand(DateTime.Now);
        }
    }
Exemple #25
0
        public async Task <ActionResult> ExternalLoginCallback(string provider, string returnUrl = null)
        {
            var info = await HttpContext.Authentication.GetAuthenticateInfoAsync(provider);

            var info1 = await HttpContext.Authentication.AuthenticateAsync(provider);

            ViewBag.LoginProvider = provider;

            #region Facebook
            if (provider == "Facebook")
            {
                var list1 = info1.Claims.ToList();
                var list2 = info.Principal.Claims.ToList();

                string email               = info.Principal.Claims.FirstOrDefault(c => c.Type == "urn:facebook:email").Value;
                string name                = info.Principal.Claims.FirstOrDefault(c => c.Type == "urn:facebook:name").Value;
                string first_name          = info.Principal.Claims.FirstOrDefault(c => c.Type == "urn:facebook:first_name").Value;
                string last_name           = info.Principal.Claims.FirstOrDefault(c => c.Type == "urn:facebook:last_name").Value;
                string birthday            = info.Principal.Claims.FirstOrDefault(c => c.Type == "urn:facebook:birthday").Value;
                string locale              = info.Principal.Claims.FirstOrDefault(c => c.Type == "urn:facebook:locale").Value;
                string gender              = info.Principal.Claims.FirstOrDefault(c => c.Type == "urn:facebook:gender").Value;
                string relationship_status = info.Principal.Claims.FirstOrDefault(c => c.Type == "urn:facebook:relationship_status").Value;
                string link                = info.Principal.Claims.FirstOrDefault(c => c.Type == "urn:facebook:link").Value;

                string education = info.Principal.Claims.FirstOrDefault(c => c.Type == "urn:facebook:education").Value;
                List <EducationDetails> educationDetails = GetFacebookSchoolDetails(education);

                string picture  = info.Principal.Claims.FirstOrDefault(c => c.Type == "urn:facebook:picture").Value;
                string imageUrl = GetFacebookImageUrl(picture);

                FacebookViewModel model = new FacebookViewModel()
                {
                    BirthDate = birthday, EducationDetails = educationDetails, Email = email, FirstName = first_name, Gender = gender, ImageUrl = imageUrl, LastName = last_name, Link = link, Locale = locale, Name = name, RelationshipStatus = relationship_status
                };

                //Scopes and Permissions https://developers.facebook.com/docs/facebook-login/permissions#reference-public_profile
                //Fields https://developers.facebook.com/docs/graph-api/reference/user

                return(View("Facebook", model));
            }
            #endregion Facebook
            #region Google
            else if (provider == "Google")
            {
                var list1 = info1.Claims.ToList();
                var list2 = info.Principal.Claims.ToList();

                string emailaddress           = info.Principal.Claims.FirstOrDefault(c => c.Type == "http://schemas.xmlsoap.org/ws/2005/05/identity/claims/emailaddress").Value;
                string name                   = info.Principal.Claims.FirstOrDefault(c => c.Type == "http://schemas.xmlsoap.org/ws/2005/05/identity/claims/name").Value;
                string displayName            = info.Principal.Claims.FirstOrDefault(c => c.Type == "urn:google:displayName").Value;
                string givenname              = info.Principal.Claims.FirstOrDefault(c => c.Type == "http://schemas.xmlsoap.org/ws/2005/05/identity/claims/givenname").Value;
                string surname                = info.Principal.Claims.FirstOrDefault(c => c.Type == "http://schemas.xmlsoap.org/ws/2005/05/identity/claims/surname").Value;
                string profile                = info.Principal.Claims.FirstOrDefault(c => c.Type == "urn:google:profile").Value;
                string id                     = info.Principal.Claims.FirstOrDefault(c => c.Type == "urn:google:id").Value;
                string kind                   = info.Principal.Claims.FirstOrDefault(c => c.Type == "urn:google:kind").Value;
                string objectType             = info.Principal.Claims.FirstOrDefault(c => c.Type == "urn:google:objectType").Value;
                string isPlusUser             = info.Principal.Claims.FirstOrDefault(c => c.Type == "urn:google:isPlusUser").Value;
                string language               = info.Principal.Claims.FirstOrDefault(c => c.Type == "urn:google:language").Value;
                string circledByCount         = info.Principal.Claims.FirstOrDefault(c => c.Type == "urn:google:circledByCount").Value;
                string verified               = info.Principal.Claims.FirstOrDefault(c => c.Type == "urn:google:verified").Value;
                string emails                 = info.Principal.Claims.FirstOrDefault(c => c.Type == "urn:google:emails").Value;
                List <GoogleEmails> emailList = GetGoogleEmailList(emails);

                string image    = info.Principal.Claims.FirstOrDefault(c => c.Type == "urn:google:image").Value;
                var    imageUrl = GetGoogleImageUrl(image);

                GoogleViewModel model = new GoogleViewModel()
                {
                    CircledByCount = circledByCount, DisplayName = displayName, Email = emailaddress, Emails = emailList, FirstName = givenname, Id = id, ImageUrl = imageUrl, IsPlusUser = isPlusUser, Kind = kind, Language = language, LastName = surname, Link = profile, Name = name, ObjectType = objectType, Verified = verified
                };

                //Scopes https://developers.google.com/identity/protocols/googlescopes

                return(View("Google", model));
            }
            #endregion Google
            #region Microsoft
            else if (provider == "Microsoft")
            {
                var list1 = info1.Claims.ToList();
                var list2 = info.Principal.Claims.ToList();

                string id                = info.Principal.Claims.FirstOrDefault(c => c.Type == "urn:microsoft:id").Value;
                string name              = info.Principal.Claims.FirstOrDefault(c => c.Type == "urn:microsoftaccount:name").Value;
                string displayName       = info.Principal.Claims.FirstOrDefault(c => c.Type == "urn:microsoft:displayName").Value;
                string first_name        = info.Principal.Claims.FirstOrDefault(c => c.Type == "urn:microsoftaccount:givenname").Value;
                string last_name         = info.Principal.Claims.FirstOrDefault(c => c.Type == "urn:microsoftaccount:surname").Value;
                string email             = info.Principal.Claims.FirstOrDefault(c => c.Type == "http://schemas.xmlsoap.org/ws/2005/05/identity/claims/emailaddress").Value;
                string userPrincipalName = info.Principal.Claims.FirstOrDefault(c => c.Type == "urn:microsoft:userPrincipalName").Value;
                string businessPhones    = info.Principal.Claims.FirstOrDefault(c => c.Type == "urn:microsoft:businessPhones").Value;
                string jobTitle          = info.Principal.Claims.FirstOrDefault(c => c.Type == "urn:microsoft:jobTitle").Value;
                string mail              = info.Principal.Claims.FirstOrDefault(c => c.Type == "urn:microsoft:mail").Value;
                string mobilePhone       = info.Principal.Claims.FirstOrDefault(c => c.Type == "urn:microsoft:mobilePhone").Value;
                string officeLocation    = info.Principal.Claims.FirstOrDefault(c => c.Type == "urn:microsoft:officeLocation").Value;
                string preferredLanguage = info.Principal.Claims.FirstOrDefault(c => c.Type == "urn:microsoft:preferredLanguage").Value;

                //Scopes and Permissions http://graph.microsoft.io/en-us/docs/authorization/permission_scopes

                MicrosoftViewModel model = new MicrosoftViewModel()
                {
                    DisplayName = displayName, Email = email, FirstName = first_name, Id = id, LastName = last_name, Name = name, UserPrincipalName = userPrincipalName
                };

                return(View("Microsoft", model));
            }
            #endregion Microsoft
            #region LinkedIn
            else if (provider == "LinkedIn")
            {
                var list1 = info1.Claims.ToList();
                var list2 = info.Principal.Claims.ToList();

                string id               = info.Principal.Claims.FirstOrDefault(c => c.Type == "urn:linkedin:id").Value;
                string formattedName    = info.Principal.Claims.FirstOrDefault(c => c.Type == "urn:linkedin:formattedName").Value;
                string firstName        = info.Principal.Claims.FirstOrDefault(c => c.Type == "urn:linkedin:firstName").Value;
                string lastName         = info.Principal.Claims.FirstOrDefault(c => c.Type == "urn:linkedin:lastName").Value;
                string emailAddress     = info.Principal.Claims.FirstOrDefault(c => c.Type == "urn:linkedin:emailAddress").Value;
                string imageUrl         = info.Principal.Claims.FirstOrDefault(c => c.Type == "urn:linkedin:pictureUrl").Value;
                string headline         = info.Principal.Claims.FirstOrDefault(c => c.Type == "urn:linkedin:headline").Value;
                string publicProfileUrl = info.Principal.Claims.FirstOrDefault(c => c.Type == "urn:linkedin:publicProfileUrl").Value;

                string          location = info.Principal.Claims.FirstOrDefault(c => c.Type == "urn:linkedin:location").Value;
                LinkedInCountry country  = GetLinkedInCountryInfo(location);

                //You can find other fields at https://developer.linkedin.com/docs/fields/basic-profile

                LinkedInViewModel model = new LinkedInViewModel()
                {
                    Email = emailAddress, FirstName = firstName, FormattedName = formattedName, Headline = headline, Id = id, ImageUrl = imageUrl, LastName = lastName, Location = country, PublicProfileUrl = publicProfileUrl
                };

                return(View("LinkedIn", model));
            }
            #endregion LinkedIn
            else if (provider == "Twitter")
            {
                var list1 = info1.Claims.ToList();
                var list2 = info.Principal.Claims.ToList();

                string userid     = info.Principal.Claims.FirstOrDefault(c => c.Type == "urn:twitter:userid").Value;
                string screenname = info.Principal.Claims.FirstOrDefault(c => c.Type == "urn:twitter:screenname").Value;
            }
            #region GitHub
            else if (provider == "GitHub")
            {
                var list1 = info1.Claims.ToList();
                var list2 = info.Principal.Claims.ToList();

                string url                 = info.Principal.Claims.FirstOrDefault(c => c.Type == "urn:github:url").Value;
                string login               = info.Principal.Claims.FirstOrDefault(c => c.Type == "urn:github:login").Value;
                string id                  = info.Principal.Claims.FirstOrDefault(c => c.Type == "urn:github:id").Value;
                string avatar_url          = info.Principal.Claims.FirstOrDefault(c => c.Type == "urn:github:avatar_url").Value;
                string gravatar_id         = info.Principal.Claims.FirstOrDefault(c => c.Type == "urn:github:gravatar_id").Value;
                string html_url            = info.Principal.Claims.FirstOrDefault(c => c.Type == "urn:github:html_url").Value;
                string followers_url       = info.Principal.Claims.FirstOrDefault(c => c.Type == "urn:github:followers_url").Value;
                string following_url       = info.Principal.Claims.FirstOrDefault(c => c.Type == "urn:github:following_url").Value;
                string gists_url           = info.Principal.Claims.FirstOrDefault(c => c.Type == "urn:github:gists_url").Value;
                string starred_url         = info.Principal.Claims.FirstOrDefault(c => c.Type == "urn:github:starred_url").Value;
                string subscriptions_url   = info.Principal.Claims.FirstOrDefault(c => c.Type == "urn:github:subscriptions_url").Value;
                string organizations_url   = info.Principal.Claims.FirstOrDefault(c => c.Type == "urn:github:organizations_url").Value;
                string repos_url           = info.Principal.Claims.FirstOrDefault(c => c.Type == "urn:github:repos_url").Value;
                string events_url          = info.Principal.Claims.FirstOrDefault(c => c.Type == "urn:github:events_url").Value;
                string received_events_url = info.Principal.Claims.FirstOrDefault(c => c.Type == "urn:github:received_events_url").Value;
                string type                = info.Principal.Claims.FirstOrDefault(c => c.Type == "urn:github:type").Value;
                string site_admin          = info.Principal.Claims.FirstOrDefault(c => c.Type == "urn:github:site_admin").Value;
                string name                = info.Principal.Claims.FirstOrDefault(c => c.Type == "urn:github:name").Value;
                string company             = info.Principal.Claims.FirstOrDefault(c => c.Type == "urn:github:company").Value;
                string blog                = info.Principal.Claims.FirstOrDefault(c => c.Type == "urn:github:blog").Value;
                string location            = info.Principal.Claims.FirstOrDefault(c => c.Type == "urn:github:location").Value;
                string email               = info.Principal.Claims.FirstOrDefault(c => c.Type == "urn:github:email").Value;
                string hireable            = info.Principal.Claims.FirstOrDefault(c => c.Type == "urn:github:hireable").Value;
                string bio                 = info.Principal.Claims.FirstOrDefault(c => c.Type == "urn:github:bio").Value;
                string public_repos        = info.Principal.Claims.FirstOrDefault(c => c.Type == "urn:github:public_repos").Value;
                string public_gists        = info.Principal.Claims.FirstOrDefault(c => c.Type == "urn:github:public_gists").Value;
                string followers           = info.Principal.Claims.FirstOrDefault(c => c.Type == "urn:github:followers").Value;
                string following           = info.Principal.Claims.FirstOrDefault(c => c.Type == "urn:github:following").Value;
                string created_at          = info.Principal.Claims.FirstOrDefault(c => c.Type == "urn:github:created_at").Value;
                string updated_at          = info.Principal.Claims.FirstOrDefault(c => c.Type == "urn:github:updated_at").Value;

                GitHubViewModel model = new GitHubViewModel()
                {
                    AvatarUrl = avatar_url, Bio = bio, Blog = blog, Company = company, CreatedAt = created_at, Email = email, EventsUrl = events_url, Followers = followers, FollowersUrl = followers_url, Following = following, FollowingUrl = following_url, GistsUrl = gists_url, GravatarId = gravatar_id, Hireable = hireable, HtmlUrl = html_url, Id = id, Location = location, Login = login, Name = name, OrganizationsUrl = organizations_url, PublicGists = public_gists, PublicRepos = public_repos, ReceivedEventsUrl = received_events_url, ReposUrl = repos_url, SiteAdmin = site_admin, StarredUrl = starred_url, SubscriptionsUrl = subscriptions_url, Type = type, UpdatedAt = updated_at, Url = url
                };

                return(View("GitHub", model));
            }
            #endregion GitHub
            return(View("ExternalLoginFailure"));
        }
        //private string ClientId = "142865696297893";

        public FacebookProfilePage()
        {
            InitializeComponent();
            BindingContext = new FacebookViewModel();
            //socialogin();
        }
 private void initializeObjects()
 {
     lController = new LocationController();
     facebookApi = new FacebookViewModel();
 }
        public async Task <IActionResult> FacebookLogin([FromBody] FacebookViewModel vm)
        {
            var appAccessTokenResponse = await Client.GetStringAsync($"https://graph.facebook.com/oauth/access_token?client_id={"189190551632736"}&client_secret={"3441dee2b662651ee71377f1677756e1"}&grant_type=client_credentials");

            var appAccessToken = JsonConvert.DeserializeObject <FacebookAppAccessToken>(appAccessTokenResponse);
            // 2. validate the user access token
            var userAccessTokenValidationResponse = await Client.GetStringAsync($"https://graph.facebook.com/debug_token?input_token={vm.AccessToken}&access_token={appAccessToken.AccessToken}");

            var userAccessTokenValidation = JsonConvert.DeserializeObject <FacebookUserAccessTokenValidation>(userAccessTokenValidationResponse);

            if (!userAccessTokenValidation.Data.IsValid)
            {
                return(BadRequest(Errors.AddErrorToModelState("login_failure", "Invalid facebook token.", ModelState)));
            }

            // 3. we've got a valid token so we can request user data from fb
            var userInfoResponse = await Client.GetStringAsync($"https://graph.facebook.com/v2.8/me?fields=id,email,first_name,last_name,name,gender,locale,birthday,picture&access_token={vm.AccessToken}");

            var userInfo = JsonConvert.DeserializeObject <FacebookUserData>(userInfoResponse);

            // 4. ready to create the local user account (if necessary) and jwt
            var user = await _userManager.FindByEmailAsync(userInfo.Email);

            if (user == null)
            {
                var appUser = new GXUser
                {
                    firstName  = userInfo.FirstName,
                    lastName   = userInfo.LastName,
                    facebookId = userInfo.Id.ToString(),
                    Email      = userInfo.Email,
                    UserName   = userInfo.Email,
                    photoUrl   = userInfo.Picture.Data.Url
                };

                var result = await _userManager.CreateAsync(appUser, Convert.ToBase64String(Guid.NewGuid().ToByteArray()).Substring(0, 8));

                if (!result.Succeeded)
                {
                    return(new BadRequestObjectResult(Errors.AddErrorsToModelState(result, ModelState)));
                }
            }
            else
            {
                user.facebookId = userInfo.Id.ToString();
                user.photoUrl   = userInfo.Picture.Data.Url;
                _context.Users.Update(user);
                await _context.SaveChangesAsync();
            }

            // generate the jwt for the local user...
            var localUser = await _userManager.FindByNameAsync(userInfo.Email);

            if (localUser == null)
            {
                return(BadRequest(Errors.AddErrorToModelState("login_failure", "Failed to create local user account.", ModelState)));
            }
            var identity = await Task.FromResult(_jwtFactory.GenerateClaimsIdentity(user.UserName, user.Id));

            var jwt = await Tokens.GenerateJwt(identity, _jwtFactory, user.UserName, _jwtOptions, new JsonSerializerSettings { Formatting = Formatting.Indented });

            return(Ok(new
            {
                Id = user.Id,
                userName = user.UserName,
                firstName = user.firstName,
                lastName = user.lastName,
                email = user.Email,
                facebookId = user.facebookId,
                gender = user.gender,
                twitterId = user.twitterId,
                googleId = user.googleId,
                birthDate = user.birthDate,
                photoUrl = !string.IsNullOrEmpty(user.photoUrl) ? user.photoUrl : "/assets/images/profile-pic.png",
                token = jwt
            }));
        }
Exemple #29
0
        private async void getCurrentProfile(FacebookViewModel profile)
        {
            await profile.SetFacebookUserProfileAsync(_fbToken);

            Content = MainStackLayout;
        }