我使用下面的代码在Twitter上发布推文。但是当我们将它上传到服务器上时,特殊字符(!,:,$ etc)的推文不会在Twitter上发布。此代码在本地系统中正常工作
string key = "";
string secret = "";
string token="";
string tokenSecret="";
try
{
string localFilename = HttpContext.Current.Server.MapPath("../images/").ToString();
using (WebClient client = new WebClient())
{
client.DownloadFile(imagePath, localFilename);
}
var service = new TweetSharp.TwitterService(key, secret);
service.AuthenticateWith(token, tokenSecret);
// Tweet wtih image
if (imagePath.Length > 0)
{
using (var stream = new FileStream(localFilename, FileMode.Open))
{
var result = service.SendTweetWithMedia(new SendTweetWithMediaOptions
{
Status = message,
Images = new Dictionary<string, Stream> { { "name", stream } }
});
}
}
else // just message
{
var result = service.SendTweet(new SendTweetOptions
{
Status = HttpUtility.UrlEncode(message)
});
}
}
catch (Exception ex)
{
throw ex;
}
答案 0 :(得分:1)
状态/ update_with_media API端点实际上已被Twitter弃用,不应使用(https://dev.twitter.com/rest/reference/post/statuses/update_with_media)。
当推文同时包含一个特殊字符时,TweetSharp也会遇到一些使用此方法的问题。和一个图像(与任何一个,但不是两个都很好)。我不知道为什么,我也无法修复它,它与OAuth签名有关,我很确定。
作为解决方案,我建议你使用TweetMoaSharp(TweetSharp的一个分支)。它已经更新,以支持新的Twitter API用于处理推文中的媒体,如果您使用新的东西,它将在这种情况下工作。
基本上,您使用新的UploadMedia方法上传每个媒体项目,这将返回“媒体ID”。然后,您可以使用普通的&#39; SendTweet&#39;方法并提供媒体ID列表以及其他状态详细信息。 Twitter会在发布时将媒体附加到推文上,当有特殊字符和图像时它会起作用。
答案 1 :(得分:0)
除TweetMoaSharp外,您还可以使用以下代码使用Tweetinvi:
var binary = File.ReadAllBytes(@"C:\videos\image.jpg");
var media = Upload.UploadMedia(binary);
var tweet = Tweet.PublishTweet("hello", new PublishTweetOptionalParameters
{
Medias = {media}
});