/// <summary> /// Get Twitter posts /// </summary> /// <param name="model"></param> /// <param name="screenName"></param> public static List <SocialFeedItemModel> GetTwitterPosts(SocialMediaAuthorizeModel model, string screenName) { var authorizer = new MvcAuthorizer { CredentialStore = new SingleUserInMemoryCredentialStore { ConsumerKey = model.AppId, ConsumerSecret = model.AppSecret, AccessToken = model.AccessToken, AccessTokenSecret = model.AccessTokenSecret } }; var context = new TwitterContext(authorizer); var tweets = (from tweet in context.Status where tweet.Type == StatusType.User && tweet.ScreenName == screenName select tweet) .ToList(); return(tweets.Select(t => new SocialFeedItemModel { Id = t.ID.ToString(CultureInfo.InvariantCulture), Message = t.Text, Created = t.CreatedAt }).ToList()); }
/// <summary> /// Check if token is expired /// </summary> /// <param name="model"></param> /// <returns></returns> public static bool IsFacebookTokenExpired(SocialMediaAuthorizeModel model) { try { var client = new FacebookClient(model.AccessToken); dynamic result = client.Get("me/friends"); } catch (FacebookOAuthException) { return(true); } return(false); }
/// <summary> /// Check if LinkedIn token is expired /// </summary> /// <param name="model"></param> /// <returns></returns> public static bool IsLinkedInTokenExpired(SocialMediaAuthorizeModel model) { try { var linkedInHelper = new LinkedInHelper(model.AccessToken); var userInfo = linkedInHelper.GetCurrentUser(); } catch (Exception) { return(true); } return(false); }
/// <summary> /// Check and update active token status /// </summary> public void CheckAndUpdateTokenStatus() { var tokens = GetAllActiveTokens().ToList(); foreach (var socialMediaToken in tokens) { var authorizeModel = new SocialMediaAuthorizeModel { AppId = socialMediaToken.AppId, AppSecret = socialMediaToken.AppSecret, AccessToken = socialMediaToken.AccessToken, AccessTokenSecret = socialMediaToken.AccessTokenSecret }; var expired = false; switch (socialMediaToken.SocialMediaId.ToEnum <SocialMediaEnums.SocialNetwork>()) { case SocialMediaEnums.SocialNetwork.Facebook: expired = SocialUtilities.IsFacebookTokenExpired(authorizeModel); break; case SocialMediaEnums.SocialNetwork.Twitter: //Currently now the twitter token does not expired break; case SocialMediaEnums.SocialNetwork.LinkedIn: expired = SocialUtilities.IsLinkedInTokenExpired(authorizeModel); break; } if (expired) { socialMediaToken.Status = SocialMediaEnums.TokenStatus.Expired; socialMediaToken.ExpiredDate = null; socialMediaToken.IsDefault = false; Update(socialMediaToken); } } }
/// <summary> /// Post status to Twitter /// </summary> /// <param name="model"></param> /// <param name="message"></param> public static object PostTwitterStatus(SocialMediaAuthorizeModel model, SocialMessageModel message) { var authorizer = new MvcAuthorizer { CredentialStore = new SingleUserInMemoryCredentialStore { ConsumerKey = model.AppId, ConsumerSecret = model.AppSecret, AccessToken = model.AccessToken, AccessTokenSecret = model.AccessTokenSecret } }; var context = new TwitterContext(authorizer); if (string.IsNullOrEmpty(message.ImageUrl)) { var tweet = Task.Run(() => context.TweetAsync(message.Message)); return(tweet); } //Post with image try { var webClient = new WebClient(); byte[] imageBytes = webClient.DownloadData(message.ImageUrl); var media = Task.Run(() => context.UploadMediaAsync(imageBytes, MimeMapping.GetMimeMapping(message.ImageUrl))); var tweet = Task.Run(() => context.TweetAsync(message.Message, new List <ulong> { media.Result.MediaID })); return(tweet); } catch (Exception) { var tweet = Task.Run(() => context.TweetAsync(message.Message)); return(tweet); } }
/// <summary> /// Get social media feed by token id /// </summary> /// <param name="tokenId"></param> /// <param name="total"></param> /// <returns></returns> public SocialFeedWidget GetFeed(int tokenId, int total) { var token = GetById(tokenId); if (token != null && token.Status == SocialMediaEnums.TokenStatus.Active) { var posts = new List <SocialFeedItemModel>(); switch (token.SocialMediaId.ToEnum <SocialMediaEnums.SocialNetwork>()) { case SocialMediaEnums.SocialNetwork.Facebook: posts = SocialUtilities.GetFacebookPosts(token.AccessToken); break; case SocialMediaEnums.SocialNetwork.Twitter: var authorize = new SocialMediaAuthorizeModel { AppId = token.AppId, AppSecret = token.AppSecret, AccessToken = token.AccessToken, AccessTokenSecret = token.AccessTokenSecret }; posts = SocialUtilities.GetTwitterPosts(authorize, token.FullName); break; case SocialMediaEnums.SocialNetwork.LinkedIn: posts = SocialUtilities.GetLinkedInPosts(token.AccessToken); break; } return(new SocialFeedWidget { Feed = posts }); } return(null); }
/// <summary> /// Post status to Facebook /// </summary> /// <param name="model"></param> /// <param name="message"></param> public static object PostFacebookStatus(SocialMediaAuthorizeModel model, SocialMessageModel message) { var client = new FacebookClient(model.AccessToken); if (!string.IsNullOrEmpty(message.ImageUrl)) { return(client.Post("/me/feed", new { message = message.Message, link = message.Url, picture = message.ImageUrl, name = message.Title, description = message.Description })); } return(client.Post("/me/feed", new { message = message.Message, link = message.Url, name = message.Title, description = message.Description })); }
/// <summary> /// Post status to Twitter /// </summary> /// <param name="model"></param> /// <param name="message"></param> public static object PostLinkedInStatus(SocialMediaAuthorizeModel model, SocialMessageModel message) { var linkedInHelper = new LinkedInHelper(model.AccessToken); return(linkedInHelper.PostStatus(message)); }