从C#应用程序发送推文(无人值守)

时间:2014-04-04 20:16:39

标签: c# twitter twitter-oauth tweetsharp

如何从无人值守的C#应用​​程序发送推文?到目前为止,我已经尝试了TweetSharp,但这对我来说并不起作用(没有错误,但也没有成功)。这是背景信息...... 我已经设置了两个Twitter帐户来测试这个(让我们称之为TwitterSender和TwitterReceiver)。 TwitterReceiver是"关注" TwitterSender。我去了dev.twitter.com并以TwitterSender身份登录并点击了"创建新应用程序"按钮。从这里,我能够找到名为" API Key"," API Secret"," Consumer Key"," Consumer Secret", "访问令牌"和"访问令牌秘密"。当我以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);

1 个答案:

答案 0 :(得分:2)

我终于有了这个工作!简而言之,要从Windows表单发送推文而不需要用户登录,您将执行以下操作:

  1. 转到dev.twitter.com,以您要发送推文的帐户登录,然后创建“应用程序”。从这个意义上讲,Twitter“应用程序”实际上只是一种授权机制,而不是用户与之交互的东西。
  2. 在创建应用程序的过程中,您将被要求提供一个网站...在观看土耳其视频教程后,我进入http://www.google.com/tr,但很可能是乌兹别克斯坦(“uz”I相信)会同样有效)。不,我不知道你为什么需要这个。
  3. 将“回拨网址”留空并取消选中“允许此应用程序使用Twitter登录”。
  4. 将应用程序的权限设置为读/写
  5. 生成您的OAuth密钥 - 应该有四个密钥:“API密钥”(AKA Consumer Key),“API Secret”(AKA ConsumerSecret),“Token Key”和“Token Secret”。
  6. 现在,转到twitter.com并登录您的帐户(与dev.twitter.com不同)。在“设置”下(隐藏在我认为的齿轮图标下),应该有一个“应用程序”选项卡,您应该看到刚刚创建的应用程序。您可能需要从此处授予权限(或者可能已设置)。您也可以在此处撤消权限。
  7. 使用Visual Studio 2012和.NET framework 4.5(不是VS2010),从NuGet获取TweetSharp。原始开发人员不再维护或支持此项目,因此如果事情不起作用,请不要期待太多文档或指导。
  8. 编写代码。例如,在按钮单击事件...

    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");
    }
    
  9. 注意 - 您不能每___发送一次完全相同的推文(一些未记录的时间)。当存在身份验证问题时,twitterStatus将返回null - 如果发生这种情况,请检查您的密钥,可能重新允许并再次重新生成它们。