.NET Library for quick and easy Twitter integration
A few days ago I wanted to create a solution to automatically tweet new blog posts. Because I did not have enough time to write a custom component to communicate to twitter I started looking for a .NET Twitter library.
After some time I found a very simple and effective library named Twitterizer. With Twitterizer you can easily implement the OAuth security mechanism.
After adding the reference to the Twitterizer library I created a ItemEventReceiver that starts on the ItemAdded event. In that event I post the title and the url to twitter.
public override void ItemAdded(SPItemEventProperties properties)
{
base.ItemAdded(properties);
string message = string.Format(CultureInfo.InvariantCulture, "New post #msftplayground :{0} - {1}", ToTinyURLS(properties.Web.Site.Url, properties.ListItem), properties.ListItem.Title);
//TODO Get OAuth from web
OAuthTokens tokens = GetTwitterToken(properties);
TwitterResponse<TwitterStatus> response = TwitterStatus.Update(tokens, message);
}
private OAuthTokens GetTwitterToken(SPItemEventProperties properties)
{
OAuthTokens retVal = null;
string consumerKeySecret = EncryptionUtility.DecryptedString(properties.Web.GetPropertyBagProperty(Constants.PropertyBagKeyConsumerKeySecret, string.Empty));
string consumerKey = EncryptionUtility.DecryptedString(properties.Web.GetPropertyBagProperty(Constants.PropertyBagKeyConsumerKey, string.Empty));
string accessToken = EncryptionUtility.DecryptedString(properties.Web.GetPropertyBagProperty(Constants.PropertyBagKeyAccessToken, string.Empty));
string accessTokenSecret = EncryptionUtility.DecryptedString(properties.Web.GetPropertyBagProperty(Constants.PropertyBagKeyAccessTokenSecret, string.Empty));
if (!string.IsNullOrEmpty(consumerKeySecret) | !string.IsNullOrEmpty(consumerKey) | !string.IsNullOrEmpty(accessToken) | !string.IsNullOrEmpty(accessTokenSecret))
{
retVal = new OAuthTokens();
retVal.AccessToken = accessToken;
retVal.AccessTokenSecret = accessTokenSecret;
retVal.ConsumerKey = consumerKey;
retVal.ConsumerSecret = consumerKeySecret;
}
return retVal;
}