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)); }
// 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(); }
/// <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); }
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))); }
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)); }
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)); }
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(); } }
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; }
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); } }
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 })); }
private async void getCurrentProfile(FacebookViewModel profile) { await profile.SetFacebookUserProfileAsync(_fbToken); Content = MainStackLayout; }