从 C# 应用程序发送推文(无人参与)
本文关键字:无人 应用程序 | 更新日期: 2023-09-27 17:56:48
如何从无人参与的 C# 应用程序发送推文? 到目前为止,我已经尝试了TweetSharp,但这对我不起作用(没有错误,但也没有成功)。以下是背景信息...我已经设置了两个Twitter帐户来测试这一点(让我们称它们为TwitterSender和TwitterReceiver)。TwitterReceiver 正在"关注"TwitterSender。我去了 dev.twitter.com 并以TwitterSender身份登录,然后单击"创建新应用程序"按钮。 从这里,我能够找到称为"API 密钥"、"API 密钥"、"消费者密钥"、"消费者密钥"、"访问令牌"和"访问令牌秘密"的东西。当我以TwitterSender身份登录时,我可以看到我已授予读/写/直接消息访问权限。我怎样才能将所有这些联系在一起,以便我可以简单地运行 C# 控制台应用程序并让它从 TwitterSender 发送一条推文("Hello World!"),以便任何关注者(例如 TwitterReceiver)都能得到它?我可以以纯文本形式硬编码用户/密码。在下面的代码中,我根本没有收到任何错误,但最终TwitterStatus最终为空,并且没有迹象表明从TwitterSender或TwitterReceiver的角度发送了推文。
TwitterClientInfo twitterClientInfo = new TwitterClientInfo();
twitterClientInfo.ConsumerKey = ConsumerKey; //Read ConsumerKey out of the app.config
twitterClientInfo.ConsumerSecret = ConsumerSecret; //Read the ConsumerSecret out the app.config
TwitterService twitterService = new TwitterService(twitterClientInfo);
twitterService.AuthenticateWith(AccessToken, AccessTokenSecret);
Console.WriteLine("Enter a Tweet");
string tweetMessage;
tweetMessage = Console.ReadLine();
TwitterStatus twitterStatus = twitterService.SendTweet(tweetMessage);
我终于开始工作了!简而言之,要在不需要用户登录的情况下从 Windows 窗体发送推文,您需要执行以下操作:
- 转到 dev.twitter.com,以您要从中发送推文的帐户登录,然后创建"应用程序"。 从这个意义上说,Twitter上的"应用程序"实际上只是一种授权机制,根本不是用户与之交互的东西。
- 在创建应用程序的过程中,系统会要求您提供一个网站...在观看了有关如何完成此操作的土耳其视频教程后,我输入了 http://www.google.com/tr,但乌兹别克斯坦(我相信"uz")可能同样有效)。 不,我不知道你为什么需要这个。
- 将"回调 URL"留空,然后取消选中"允许此应用程序使用 Twitter 登录"。
- 将应用程序的权限设置为读/写
- 生成您的OAuth密钥 - 应该有四个密钥:"API 密钥"(又名消费者密钥),"API 密钥"(又名ConsumerSecret),"令牌密钥"和"令牌密钥"。
- 现在,转到 twitter.com 并登录您的帐户(与 dev.twitter.com 不同)。 在"设置"下(我认为隐藏在齿轮图标下),应该有一个"应用程序"选项卡,您应该在其中看到刚刚创建的应用程序。 您可能需要从此处授予它权限(或者可能已经设置)。您也可以在此处撤销权限。
- 使用 Visual Studio 2012 和 .NET Framework 4.5(不是 VS2010),从 NuGet 获取 TweetSharp。此项目不再由原始开发人员维护或支持,因此如果事情不起作用,请不要期望太多文档或指导。
-
编写代码。例如,在按钮单击事件中...
var service = new TweetSharp.TwitterService("ConsumerKey","ConsumerSecret","TokenKey","TokenSecretKey"); //Replace keys with values from step #5 var twitterStatus = service.SendTweet(new SendTweetOptions() { Status ="Hello World" }); if (twitterStatus != null) { MessageBox.Show("It worked"); }
注意 - 您不能在每个___发送完全相同的推文超过一次(一些未记录的时间量)。当存在身份验证问题时,twitterStatus 将返回 null - 如果发生这种情况,请检查您的密钥,也许重新许可并再次重新生成它们。