protected void OAuth(EntityUserSocial twitterSocial) { _client.OAuthUser(twitterSocial.ConsumerKey, twitterSocial.ConsumerSecret, twitterSocial.Token, twitterSocial.TokenSecret); }
public async Task <ApiResponse <AccessTokenModel> > OAuthByTwitter(string token, string verifier, string authorizationId) { var uModel = _twitterClient.ValidateTwitterAuth(token, verifier, authorizationId); if (uModel == null) { return(null); } var dbUser = await _userStore.FindByEmailAsync(uModel.Email.ToLower()); if (dbUser == null) { dbUser = new EntityUser { UserName = uModel.Email, FirstName = uModel.ScreenName, LastName = "", Email = uModel.Email, PictureUrl = uModel.ProfileImageUrl400x400, Birthday = DateTime.UtcNow, Locale = uModel.Language.ToString(), EmailConfirmed = true, NormalizedEmail = uModel.Email.ToLower(), NormalizedUserName = uModel.Email.ToLower() }; await _userStore.CreateAsync(dbUser); await _userStore.AddToRoleAsync(dbUser, "user"); } var dbSocial = await _context.UserSocials.FirstOrDefaultAsync(x => x.UserId == dbUser.Id && x.Type == EntityUserSocialType.Twitter && x.ExternalId == uModel.Id); if (dbSocial == null) { dbSocial = new EntityUserSocial { ExternalId = uModel.Id, Type = EntityUserSocialType.Twitter, UserId = dbUser.Id, }; await _context.UserSocials.AddAsync(dbSocial); await _context.SaveChangesAsync(); } dbSocial.Token = uModel.Credentials.AccessToken; dbSocial.TokenSecret = uModel.Credentials.AccessTokenSecret; dbSocial.ConsumerKey = uModel.Credentials.ConsumerKey; dbSocial.ConsumerSecret = uModel.Credentials.ConsumerSecret; dbSocial.TokenExpires = DateTime.UtcNow.AddYears(100); _context.UserSocials.Update(dbSocial); await _context.SaveChangesAsync(); var accessToken = await AuthUser(dbUser, EntityUserSocialType.Twitter); return(Ok(accessToken)); }
public async Task <ApiResponse <AccessTokenModel> > OAuthByFacebook(string fbShortToken) { var client = GetFacebookClient(fbShortToken); object userModelResponse = null; try { userModelResponse = await client.GetTaskAsync("me", new { fields = new[] { "id", "name", "email", "birthday", "picture", "locale", "first_name", "last_name" } }); } catch (Exception e) { } var uModel = FacebookParser.Parse <FacebookUserProfileModel>(userModelResponse); if (uModel == null) { return(Failed()); } var dbUser = await _userStore.FindByEmailAsync(uModel.Email.ToLower()); if (dbUser == null) { dbUser = new EntityUser { UserName = uModel.Email, FirstName = uModel.FirstName, LastName = uModel.LastName, Email = uModel.Email, PictureUrl = uModel.Picture.Data.Url, Birthday = uModel.Birthday, Locale = uModel.Locale, EmailConfirmed = true, NormalizedEmail = uModel.Email.ToLower(), NormalizedUserName = uModel.Email.ToLower() }; await _userStore.CreateAsync(dbUser); await _userStore.AddToRoleAsync(dbUser, "user"); } var dbSocial = await _context.UserSocials.FirstOrDefaultAsync(x => x.UserId == dbUser.Id && x.Type == EntityUserSocialType.Facebook && x.ExternalId == uModel.Id); if (dbSocial == null) { dbSocial = new EntityUserSocial { ExternalId = uModel.Id, Type = EntityUserSocialType.Facebook, UserId = dbUser.Id, }; await _context.UserSocials.AddAsync(dbSocial); await _context.SaveChangesAsync(); } // get long live token using (HttpClient http = new HttpClient()) { var longTokenResponse = await http.GetAsync($"https://graph.facebook.com/oauth/access_token?grant_type=fb_exchange_token&client_id=" + _appData.FacebookAppId + "&client_secret=" + _appData.FacebookAppSecret + "&fb_exchange_token=" + fbShortToken); if (!longTokenResponse.IsSuccessStatusCode) { return(Failed()); } var longTokenResponseContent = await longTokenResponse.Content.ReadAsStringAsync(); var facebookToken = JsonConvert.DeserializeObject <FacebookAccessTokenModel>(longTokenResponseContent); if (facebookToken == null) { return(Failed()); } dbSocial.Token = facebookToken.AccessToken; dbSocial.TokenExpires = DateTime.UtcNow.AddSeconds(facebookToken.ExpiresIn); _context.UserSocials.Update(dbSocial); await _context.SaveChangesAsync(); } var token = await AuthUser(dbUser, EntityUserSocialType.Facebook); return(Ok(token)); }
protected void OAuthTwitter(TwitterClient client, EntityUserSocial social) { client.OAuthUser(social.ConsumerKey, social.ConsumerSecret, social.Token, social.TokenSecret); }