public async Task <ServiceResponse <FacebookResponse> > GetFacebookData(FacebookRequest facebookRequest) { _ISocialDataService.Write(facebookRequest, path + "facebook.txt"); var fileJson = await _ISocialDataService.Read <FacebookRequest>(path + "facebook.txt"); var c = new Comment { Number = fileJson.CommentsCount }; var l = new Like { Number = fileJson.LikesCount }; var r = new FacebookResponse { Comments = c, Likes = l }; var res = new ServiceResponse <FacebookResponse>() { Data = r, Message = "Success", Success = true }; return(res); }
public async Task <AuthenticateResponse> LoginWithFacebook(FacebookRequest facebookToken) { HttpClient client = new HttpClient(); var appId = this._appSettings.FacebookApp.AppId; var appSecret = this._appSettings.FacebookApp.AppSecret; // 1.generate an app access token var appAccessTokenResponse = await client.GetStringAsync($"https://graph.facebook.com/oauth/access_token?client_id={appId}&client_secret={appSecret}&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={facebookToken.AccessToken}&access_token={appAccessToken.AccessToken}"); var userAccessTokenValidation = JsonConvert.DeserializeObject <FacebookUserAccessTokenValidation>(userAccessTokenValidationResponse); if (!userAccessTokenValidation.Data.IsValid) { throw new AppException("Invalid facebook token."); } // 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&access_token={facebookToken.AccessToken}"); var userInfo = JsonConvert.DeserializeObject <FacebookUserData>(userInfoResponse); // 4. ready to create the local user account (if necessary) and jwt return(await this.CheckFacebookUserIdDB(userInfo)); }
private void FacebookStateChanged(FacebookRequest request, NavigationState state) { switch (state) { case NavigationState.Done: case NavigationState.Error: //WebOverlay.Visibility = Windows.UI.Xaml.Visibility.Collapsed; WebPopup.IsOpen = false; FacebookOverlay.NavigateToString(""); break; case NavigationState.Navigating: switch (request) { case FacebookRequest.Logout: FacebookOverlay.Visibility = Windows.UI.Xaml.Visibility.Collapsed; CancelButton.Visibility = Windows.UI.Xaml.Visibility.Collapsed; break; case FacebookRequest.Login: case FacebookRequest.InviteRequest: FacebookOverlay.Visibility = Windows.UI.Xaml.Visibility.Visible; CancelButton.Visibility = Windows.UI.Xaml.Visibility.Visible; break; } //WebOverlay.Visibility = Windows.UI.Xaml.Visibility.Visible; WebPopup.IsOpen = true; break; } }
public void CanRequestAPage() { var request = new FacebookRequest(_testAccessToken); var page = request.GetPage("tran.thanh.ne").Result; Assert.IsNotNull(page); System.Diagnostics.Debug.WriteLine(page.about); }
public void CanRequestPageRawResult() { var request = new FacebookRequest(_testAccessToken); var result = request.GetPageRawResult("tran.thanh.ne"); Assert.IsNotNull(result); System.Diagnostics.Debug.WriteLine(result); }
public async Task <BaseResponse <SignInResponse> > getUserByFacebookToken(string tokenAccess) { var data = new BaseResponse <SignInResponse>(); HttpClient client = new HttpClient(); var uri = new Uri(Constants.SignInWithFacebook); FacebookRequest request = new FacebookRequest(); request.FacebookToken = tokenAccess; var json = JsonConvert.SerializeObject(request); var content = new StringContent(json, Encoding.UTF8, "application/json"); try { HttpResponseMessage response = await client.PostAsync(uri, content); HttpStatusCode code = response.StatusCode; if (code == HttpStatusCode.OK) { var result = await response.Content.ReadAsStringAsync(); data = JsonConvert.DeserializeObject <BaseResponse <SignInResponse> >(result); var stream = data.Data.Token; if (data.HasError || string.IsNullOrWhiteSpace(stream)) { return(data); } await getUserByToken(stream); } } catch (Exception ex) { data.HasError = true; data.Message = ex.Message; return(data); } return(data); }
private void FacebookStateChanged(FacebookRequest request, NavigationState state) { switch (state) { case NavigationState.UserInput: MainPage.Current.FacebookLoading.Visibility = Visibility.Collapsed; break; case NavigationState.Done: MainPage.Current.FacebookGrid.Visibility = Visibility.Collapsed; MainPage.Current.FacebookLoading.Visibility = Visibility.Collapsed; break; case NavigationState.Error: MainPage.Current.FacebookGrid.Visibility = Visibility.Visible; MainPage.Current.FacebookLoading.Visibility = Visibility.Collapsed; //FacebookOverlay.NavigateToString(""); // Why is this here? Doesn't make sense to show an empty page if there is an error break; case NavigationState.Navigating: MainPage.Current.FacebookLoading.Visibility = Visibility.Visible;; switch (request) { case FacebookRequest.Logout: MainPage.Current.FacebookGrid.Visibility = Visibility.Collapsed; break; case FacebookRequest.Login: MainPage.Current.FacebookGrid.Visibility = Visibility.Visible; break; case FacebookRequest.InviteRequest: MainPage.Current.FacebookGrid.Visibility = Visibility.Visible; break; } break; } }
public async Task <User> getUserByFacebookToken(string tokenAccess) { var data = new BaseResponse <SignInResponse>(); User user = new User(); HttpClient client = new HttpClient(); var uri = new Uri(Constants.SignInWithFacebook); FacebookRequest request = new FacebookRequest(); request.FacebookToken = tokenAccess; var json = JsonConvert.SerializeObject(request); var content = new StringContent(json, Encoding.UTF8, "application/json"); try { HttpResponseMessage response = await client.PostAsync(uri, content); HttpStatusCode code = response.StatusCode; if (code == HttpStatusCode.OK) { var result = await response.Content.ReadAsStringAsync(); data = JsonConvert.DeserializeObject <BaseResponse <SignInResponse> >(result); var stream = data.Data.Token; user = await getUserByToken(stream); await SecureStorage.SetAsync("user_token", stream); } } catch (Exception) { throw; } return(user); }
public LoginResponse FacebookLogin(FacebookRequest facebookRequest) { LoginResponse loginResponse = new LoginResponse(); try { Facebook.FacebookClient fb = new Facebook.FacebookClient(); dynamic result = fb.Post("oauth/access_token", new { client_id = facebookRequest.AppID, client_secret = facebookRequest.AppSecret, redirect_uri = facebookRequest.FacebookUri, //Test ederken kendi mvc projenin localhost kısmını yaz. code = facebookRequest.FacebookCode }); var accessToken = result.access_token; fb.AccessToken = accessToken; dynamic userinfo = fb.Get("me?fields=first_name,middle_name,last_name,id,email"); string email = userinfo.email, firstName = userinfo.first_name, lastName = userinfo.last_name, socialId = userinfo.id; User user = _userRepository.Get(t => t.Email == email).FirstOrDefault(); if (user != null) { try { Token token = CreateToken(); user.Tokens.Add(token); if (_unitOfWork.SaveChanges() > 0) { _cacheManager.AddUserToCache(token.TokenText, user); loginResponse.Username = user.FullName(); loginResponse.Token = token.TokenText; loginResponse.ExpireDate = token.EndDate; loginResponse.IsVerify = true; loginResponse.Email = user.Email; loginResponse.SetStatus(Constants.ResponseCode.SUCCESS); return(loginResponse); } } catch (Exception) { loginResponse.SetStatus(Constants.ResponseCode.SYSTEM_ERROR); return(loginResponse); } return(loginResponse); } user = new User();//newlemezsek patlıyor. user.Email = email; user.Name = firstName; user.Surname = lastName; user.Password = firstName; user.Username = firstName + lastName; user.IsVerified = true; user.SocialInfos.Add(new SocialInfo { SocialID = socialId, AccessToken = accessToken, SocialTypeID = (int)Constants.SocialType.Facebook }); if (UserRegistry(user).Code == 0) // Başarılı register { Token token = CreateToken(); user.Tokens.Add(token); if (_unitOfWork.SaveChanges() > 0) { _cacheManager.AddUserToCache(token.TokenText, user); loginResponse.Username = user.FullName(); loginResponse.Token = token.TokenText; loginResponse.IsVerify = true; loginResponse.SetStatus(Constants.ResponseCode.SUCCESS); return(loginResponse); } } loginResponse.SetStatus(Constants.ResponseCode.SYSTEM_ERROR); } catch (Exception ex) { loginResponse.SetStatus(Constants.ResponseCode.SYSTEM_ERROR); } return(loginResponse); }
public async Task <IActionResult> FacebookLogin([FromBody] FacebookRequest facebookToken) { var response = await this._userService.LoginWithFacebook(facebookToken); return(Ok(response)); }
public ActionResult Facebook([FromBody] FacebookRequest request) { var response = new BaseResponse <SignInResponse>(); response.Data = new SignInResponse(); FacebookClient client = new FacebookClient(request.FacebookToken, "1112107155635637"); var FBresponse = client.Get("/me?fields=id,first_name,last_name,email", request.FacebookToken); string id = (string)FBresponse.SelectToken("id"); string firstName = (string)FBresponse.SelectToken("first_name"); string lastName = (string)FBresponse.SelectToken("last_name"); string email = (string)FBresponse.SelectToken("email"); if (string.IsNullOrWhiteSpace(email)) { response.Message = "Facebookta kayıtlı herhangi bir e-posta adresiniz olmadığı için oturum açamıyoruz, lütfen kayıt ol seçeneğini kullanın."; return(Ok(response)); } User user = null; var control = externalLoginRepo.FirstOrDefaultBy(x => x.ProviderKey == id && x.ProviderName == Provider.Facebook); if (control != null) { user = userRepo.GetById(control.UserID); } else { user = userRepo.FirstOrDefaultBy(x => x.Email == email); if (user == null) { //Yeni kullanıcı oluşturmamız lazım. var Username = email.Split("@")[0].ToString().ToLower(); while (userRepo.Any(x => x.Username == Username)) { Username += new Random().Next(1, 9).ToString(); } var Password = new Cryptography().EncryptString(Cryptography.GenerateKey(6)); List <ExternalLogin> externalLogins = new List <ExternalLogin>(); externalLogins.Add(new ExternalLogin { ProviderKey = id, ProviderName = Provider.Facebook }); var temp = new Entity.SystemUser.User { FirstName = firstName, LastName = lastName, Email = email, Role = Role.User, Username = Username, Password = Password, ExternalLogins = externalLogins }; userRepo.Add(temp); user = temp; } else { externalLoginRepo.Add(new ExternalLogin { UserID = user.Id, ProviderKey = id, ProviderName = Provider.Facebook }); } } var tokenHandler = new JwtSecurityTokenHandler(); var key = Encoding.ASCII.GetBytes("this is my custom Secret key for authnetication"); var tokenDescriptor = new SecurityTokenDescriptor { Subject = new ClaimsIdentity(new Claim[] { new Claim(ClaimTypes.Name, user.Username), new Claim("userID", user.Id.ToString()), new Claim(ClaimTypes.Role, user.Role.ToString()), new Claim("firstName", user.FirstName), new Claim("lastName", user.LastName) }), Expires = DateTime.UtcNow.AddDays(7), SigningCredentials = new SigningCredentials(new SymmetricSecurityKey(key), SecurityAlgorithms.HmacSha256Signature) }; var token = tokenHandler.CreateToken(tokenDescriptor); response.Data.Token = tokenHandler.WriteToken(token); return(Ok(response)); }
public LoginResponse FacebookLogin(FacebookRequest facebookRequest) { return(_loginService.FacebookLogin(facebookRequest)); }
/// <summary>Initializes a new instance of the <see cref="FacebookAsyncState" /> class.</summary> /// <param name="facebookRequest">A <see cref="FacebookRequest" /> object.</param> /// <param name="httpRequest">An <see cref="HttpWebRequest" /> object.</param> internal FacebookAsyncState(FacebookRequest facebookRequest, HttpWebRequest httpRequest) { this.HttpRequest = httpRequest; this.Request = facebookRequest; }
/// <summary> /// Initializes the FacebookServiceSession instance based on the /// current request to the server. /// </summary> /// <param name="context">Represents the current request being processed.</param> /// <returns>A URL to redirect to if a redirect needs to be performed; null otherwise.</returns> protected internal virtual void Initialize(HttpContext context) { string redirectUrl = null; HttpRequest request = context.Request; string[] friendIDs = null; string friendIDList = request["fb_sig_friends"]; if (friendIDList != null) { if (friendIDList.Length == 0) { friendIDs = new string[0]; } else { friendIDs = friendIDList.Split(','); } } InitializeFriends(friendIDs); FacebookSessionType sessionType = FacebookSessionType.User; string sessionKey = request["fb_sig_session_key"]; bool sessionExpires = (String.CompareOrdinal(request["fb_sig_expires"], "0") != 0); string userID = request["fb_sig_user"]; IsApplicationAdded = (String.CompareOrdinal(request["fb_sig_added"], "1") == 0) || (String.IsNullOrEmpty(request["fb_page_id"]) == false); InCanvasPage = (String.CompareOrdinal(request["fb_sig_in_canvas"], "1") == 0); InIFramePage = (String.CompareOrdinal(request["fb_sig_in_iframe"], "1") == 0); string pageUserID = null; if (String.IsNullOrEmpty(request["fb_page_id"]) == false) { pageUserID = userID; userID = request["fb_page_id"]; } if (String.IsNullOrEmpty(sessionKey) || String.IsNullOrEmpty(userID)) { string authToken = request["auth_token"]; if (String.IsNullOrEmpty(authToken) == false) { FacebookRequest sessionRequest = new FacebookRequest(this); string dummy; sessionKey = sessionRequest.CreateSession(authToken, out userID, out sessionExpires, out dummy); Debug.Assert(String.IsNullOrEmpty(dummy)); } } if (!String.IsNullOrEmpty(sessionKey) && !String.IsNullOrEmpty(userID)) { if (String.IsNullOrEmpty(pageUserID) == false) { sessionType = FacebookSessionType.PresencePage; } InitializeSessionKey(sessionKey, sessionExpires, sessionType); InitializeUserID(userID, pageUserID); } else { redirectUrl = String.Format(FacebookLoginUrl, ApplicationKey); } if ((redirectUrl == null) && (IsApplicationAdded == false)) { redirectUrl = String.Format(FacebookAddAppUrl, ApplicationKey); } if (redirectUrl != null) { Redirect(redirectUrl); } }