【发布时间】:2014-05-17 07:47:02
【问题描述】:
如何从无人参与的 C# 应用程序发送推文?到目前为止,我已经尝试过 TweetSharp,但这对我不起作用(没有错误,但也没有成功)。这是背景信息... 我已经设置了两个 Twitter 帐户来测试这一点(我们称它们为 TwitterSender 和 TwitterReceiver)。 TwitterReceiver 正在“关注” TwitterSender。我去了 dev.twitter.com 并以 TwitterSender 身份登录并单击“创建新应用程序”按钮。从这里,我能够找到名为“API Key”、“API Secret”、“Consumer Key”、“Consumer Secret”、“Access Token”和“Access Token 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);
【问题讨论】:
-
根据你的文字墙,我很难理解你的代码是如何行为不端的......
-
如果不首先显示浏览器窗口供用户进行身份验证,您可能无法从控制台应用程序完成此操作。一旦您拥有访问令牌(如果 Twitter 提供选项,则刷新令牌)您将能够在没有浏览器的情况下管理访问。如果你有令牌,TweetSharp 就可以正常工作 - 代码中是否有特定部分不适合你?
-
是的,您应该认真阅读 OAuth 2.0 协议以了解这些东西的工作原理。
-
谢谢鹅 - 我添加了我正在尝试的代码的重要部分......没有错误,但不幸的是也没有推文。最后一行代码的 twitterStatus 为空。我真的必须让人类用户以某种方式与代码交互是否正确?我会认为这就是“秘密”的全部意义,不是吗?
-
一些平台提供了一种无浏览器访问的方法,但我相当肯定 Twitter 不是其中之一。 OAuth 的重点是用户使用 Twitter 进行身份验证,Twitter 为您的第三方应用程序提供有限时间的访问令牌来检索/发送数据。这样,用户就可以访问您的第三方应用,而无需与您分享他或她的凭据。
标签: c# twitter twitter-oauth tweetsharp