【问题标题】:How to write a command line C# program that posts to Twitter如何编写发布到 Twitter 的命令行 C# 程序
【发布时间】:2014-11-21 09:25:36
【问题描述】:

我想用 C# 编写一个控制台程序,将推文发布到 Twitter。我以前从未使用过 Twitter API,也不知道它们的身份验证是如何工作的。我找到了一个名为 Twitterizer 的 API 库,但它似乎面向 Web 应用程序并希望用户使用 Web 浏览器登录。 Twitter 网站上的所有 API 文档似乎也是针对这种情况的。

是否可以使用没有 Web 浏览器访问权限的控制台应用程序访问 Twitter API?对于我想在其下发布的 Twitter 用户,我对名称和密码进行了很好的硬编码。谢谢!

迈克

【问题讨论】:

标签: c# .net twitter


【解决方案1】:

您需要使用 OAuth 在 twitter 中进行身份验证。

然后使用常规 HTTP 请求来使用 twitter 基于 JSON 的 API。

Here you can find 一篇关于 OAuth、Twitter 和控制台应用程序的好文章。

【讨论】:

  • 那么,这是否意味着控制台应用程序会弹出一个网络浏览器供用户登录?我也没有这个。
  • @Mike 不,不是这个意思。
  • 文章中有这样的代码:var authorizationUrl = String.Format(AuthorizeUrl, collection[0]); Process.Start(authorizationUrl);这当然会产生一个网络浏览器..
  • 要使 OAuth 正常工作,用户需要允许应用程序访问他们的数据,这是在 Web 浏览器中完成的。当用户允许访问时,他们会看到一个 PIN 码,该 PIN 码会重新输入到应用程序中。
【解决方案2】:

还可以在linq2twitter lib 中进行抢劫。来自它的文档;

Twitter API 是使用 可表示状态转移 (REST)。 维基百科将 REST 定义为“……一种风格 软件架构的 分布式超媒体系统...", 但我会大胆尝试 简化这意味着什么。在 实践中,REST 是一种 Web 服务 基于超文本传输​​的协议 协议 (HTTP)。您使用 REST Web 通过使用 URL 和获取一些文本 表单,通常是 XML 或 JSON。所以, 如果你要编写代码 具有以下 URL 的 HTTP 请求:

http://api.twitter.com/1/statuses/public_timeline.xml

你会得到一个 XML 文档 所有 Twitter 状态来自 公共时间表,这是一个 最近 20 条推文的时间快照 在您提出要求时。前进 然后打开浏览器,复制粘贴 将上面的 URL 添加到地址栏中, 看看你会得到什么。

【讨论】:

    【解决方案3】:

    我在网上找不到任何关于如何做到这一点的合适信息,所以我决定写我自己的博客文章,详细介绍所有细节。尽情享受吧!

    http://blog.kitchenpc.com/2011/01/22/rise-of-the-twitterbot/

    【讨论】:

      【解决方案4】:

      当然,您可以使用任何东西通过 RESTful api 连接到 Twitter。
      您应该使用 oauth,并在 http://dev.twitter.com 中设置您的应用程序,然后您应该阅读文档中列出的所有文章,您必须将您的应用程序指定为客户端而不是浏览器,以便用户输入一个数字以通过身份验证。

      您可以使用许多库以节省时间,所有库都列在文档中

      请注意,您不应该使用 Twitter 自己的 api 控制台,它有问题(因为我知道有时无法解析参数),您应该使用强大且稳定的 APIgee。

      如果你想使用基本认证,你应该使用api代理(一个著名的是twip),如果你只需要一个C#应用程序,你必须自己编码:

      1. 您应该使用给定的用户名和密码登录 twitter,解析通过的 cookie
      2. 使用普通 oauth 获取临时访问令牌 url。
      3. 使用从第 1 步获得的 cookie,模拟表单提交以允许您的应用,捕获 PIN 码
      4. 使用 PIN 码完成 oauth。
      5. 最重要的是,您必须将访问令牌存储在客户端计算机中,以便下次您可以绕过上述步骤

      【讨论】:

      • 我试图找到答案的主要问题是,如果我想在用户名和密码中硬编码而不是让任意用户使用 Web 浏览器登录,我可以使用 OAuth。
      • 实际上你不能用用户名和密码直接访问twitter api,oauth不允许这样做。您可以使用 twitter api 代理来存档您的目标。我知道的一个著名的是twip(托管在谷歌代码中),您可以使用客户端应用程序,因此您不需要提供回调网址。
      • 看起来 twip 是用 PHP 编写的,而且我使用的是 C# 代码,所以这是不行的。我不明白,这只是 HTTP,所以我应该能够做任何我想做的事情想要。
      • 您必须自己实现(我已经编辑了答案),或者您可以通过使用 php 服务器并将 baseurl 替换为它来使用它
      • 谢谢,这似乎违反了 TWitter 的政策,所以不要走那条路。我要试试 TweetSharp,看看它是否更适合控制台应用程序。
      【解决方案5】:

      刚刚用 C# 写了一个 Twitter Bot。目前正在向@valuetraderteam发布推文。

      https://gist.github.com/sdesalas/c82b92200816ecc83af1

      下面 GIST 中的 API 组件少于 500 行,唯一的依赖项是 Json.NET,您需要下载适用于 x64 或 x86 的最新 DLL(取决于您的目标平台)并包含为在您的项目中引用。

      页面底部有一个示例,说明如何从控制台应用程序发出推文

      希望这对其他人有用。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2021-01-11
        • 2013-07-18
        • 1970-01-01
        • 1970-01-01
        • 2015-12-08
        • 1970-01-01
        • 2016-03-21
        • 2020-01-29
        相关资源
        最近更新 更多